Table of Contents

CS3342 Course Log B Term 2015-2016 Academic Year

1 [W1] Tuesday 5 Jan 2016: First meeting of this class

1.1 Cover announcements page/introduce course

  • demo'd org-mode, specifically using org->logging work -> clock in -> clock out -> create clock table
  • www.csd.uwo.ca/~webber/CS3342/index.html

1.2 Cover course outline

1.3 First reading

  • for Thursday, read pages 3 - 11 (Chapter 1, up to and including Section 1.3.6)
  • your group will be asked to hand in a paragraph on what you all think is the main problem with using English as a programming language in the near future based on the assigned reading. 10 minutes of class time Thursday will be set aside for your group to create its answer.
  • looking ahead, from this reading, next week will be dedicated to Chapter 2 (pages 17 - 50).
  • regarding language examples: we are going to look at many programming languages this semester. some languages will just appear for one example and others will come up frequently. the only time you won't have access to your notes is the final exam (and the practice quizzes that prepare for the final). for the final exam, we will prepare reference cards for the languages that are used as examples and these will be the ones we work with in class and on the programming assignments. the main role of the textbook is to cover the concepts of the course. however, its discussion of C++, Miranda, Lisp, Scheme, and Prolog will connect closely to the languages we will be working with.

1.4 Concept mapping and the Overview paragraph of Chapter 1

  • note: the last two sentences of overview are about Sections 1.4 and 1.5, which we are skipping.

1.5 Ruby Tic Tac Toe program example handout

on line 151, what does it look like the built-in method find is doing? how does that line work?

2 [W1] Thursday 7 Jan 2016:

2.1 review announcements page

  • ruby documentation
  • today's example
  • stuff from last class

2.2 prepare group answer re Tuesdays reading (10 minutes)

NOTE: Do not put your student id on the pages handed in by your group. Just your names (first and last). Clearly printed.

recall:

  • for Thursday, read pages 3 - 11 (Chapter 1, up to and including Section 1.3.6)
  • your group will be asked to hand in a paragraph on what you all think is the main problem with using English as a programming language in the near future based on the assigned reading. 10 minutes of class time Thursday will be set aside for your group to create its answer.
  • discussion?

2.3 return Tuesday's group ruby question

recall: on line 151, what does it look like the built-in method find is doing? how does that line work?

people seemed to do a reasonable job on getting started on this. reading code written by other people is a useful skill – we will get a bit of practice on doing this this semester.

2.4 readings/concepts for next week

  • as mentioned Tuesday, by next Thursday you should have read all of Chapter 2.

    • Sections 2.1 and 2.2 give us different ways to think about abstraction in programming languages.
    • Section 2.3 gives us a way to organize all the details of a new language. it is useful to think about how these ideas are reflected in different aspects of Java. as we get deeper into Ruby and later languages, it is useful to think about how these ideas are being reflected in these languages also.
    • Section 2.4 introduces a number of terms used to describe types of programming languages. We will be using these terms throughout the rest of the semester.
    • by Tuesday, you should be somewhere in Section 2.3,the further in, the better (as it makes you that much closer to being done by Thursday).
    • question to bring to Tuesday's class: So far, we have been introduced in the textbook to many `new' words and phrases. For example, perhaps, `syntax' or `semantic intent'. Are there any that you think need further discussion at this point? If so, list your top choices (at most three) and for each, indicate a sentence (and its page number) for a usage of that word or phrase that looks like a good place to start sorting the matter out. If you can come up with a specific question about the word or phrase, that would be ok instead (or in addition to the sentence). Drop off a page at the start of class and I will pick a few randomly on Tuesday, then read through them (mistake: this should read `the rest') after class and see if there are any clusters that need to be looked at on Thursday.

3 [W2] Tuesday 12 Jan 2016: Last day to add this course

3.1 Planning out the semester

  • 38 hours of class this semester (12 weeks of 3 and 2 the last week). Last week we did 3 hours. so 7.89% of the semester is done. at the end of today's class, we will be 13.15% done.
  • another way to look at things is how are we going to navigate the textbook. so far we have been moving at a chapter a week. so I don't expect us to cover more than 12 chapters (worth of material – although we might look at a few sections from more chapters).
    • Chapters 1 thru 4 are important to set up the rest of the semester. So far, the only parts of these that look skippable are 1.4, 1.5, and 4.4.1
    • Chapters 12 and 13 are my favourite topics
    • to get to 12, we are going to need parts of 5 thru 11
    • if we have time, some of the material on polymorphic typing and generics is worth while (generic programming was added to Java in 2004 – was in C++ earlier (templates)). lambda was a new feature in Java with version 8 (circa 2014) connecting to functional programming (introduced into C++ roughly the same time). the assert statement went into Java 1.4 (circa 2002) (always been in C and C++). logic programming and its near relative constraint programming are available in most major programming languages as add-on libraries.
  • projects

    • clearly the first project will use Ruby.
    • for logic programming, we will have a gprolog project
    • a functional programming project could be based in either Haskell or Scheme – probably spend a week of class on each and then vote on which to go deeper into
    • a domain specific project could be based on either Emacs Lisp or JavaScript – probably spend a week of class on each and then vote on which to go deeper into
    • note: there is roughly 3 weeks of coverage in class for each of the four project styles.
    • NOTE: THE ABOVE COMMENTS ARE PROVISIONAL. BUT THE TIME RESOURCE LIMITS THAT DRIVE THEM ARE REAL.

3.2 Reminder

  • First programming assignment due in two weeks.

3.3 Problems with Concepts and Phrases in the Readings So Far?

3.4 Comment on Groups left over from Thursday

  • if a group of people are puzzling it out, the puzzling goes faster, as not everyone figures each step out at the same speed. a communicating group figures each step out at the speed of the fastest person on that step. even better, perhaps some parallelism happens as one person tries to figure out what sort of think @gamestate holds while someone else if trying to figure out where move gets used. and, a communicating group can produce more reliable answers as when one person figures something out, the other people can ask questions to check and make sure they agree that that step was done right.
  • this sort of group interaction doesn't happen automatically, but it is something to strive for.

3.5 start discussing `Stupid Ruby Tricks' examples

– these are on the course web page – if printed out, would be 11 pages – irb is tagging each prompt with a unique number for these examples – you can jot down the numbers of things you want to look at again later – this is not a bunch of stuff to memorize. this is a series of probes done to see how ruby works. what you want to think about is what is ruby that it works this way? – Whorfian hypothesis: the users of a natural language tend to think ideas that are easiest to express in that language – Zipf's Law: the most commonly used words in a natural language are the shortest – consider Chapter 2's `principle of frequency' – learning Ruby isn't about figuring out how to do in Ruby what you do in Java. Rather, it is about figuring out how an `ideal' Ruby speaker would program it. – What would Yukihiro Matsumoto (matz) do?

4 [W2] Thursday 14 Jan 2016:

5 [W3] Tuesday 19 Jan 2016:

6 [W3] Thursday 21 Jan 2016:

7 [W4] Tuesday 26 Jan 2016: First programming assignment due

8 [W4] Thursday 26 Jan 2016:

9 [W5] Tuesday 2 Feb 2016:

9.1 Reminder

  • Second programming assignment due in two weeks (ignoring Reading week).

10 [W5] Thursday 4 Feb 2016:

11 [W6] Tuesday 9 Feb 2016:

12 [W6] Thursday 11 Feb 2016:

13 15 Feb 2016 – 19 Feb 2016: Reading Week

14 [W7] Tuesday 23 Feb 2016: Second programming assignment due

15 Thursday 25 Feb 2016: Take home midterm distributed

15.1 Reminders

  • Take home midterm distributed at end of class (PDF file posted on course web page afterwards). Any questions regarding the exam will have their answers posted to the course announcements page.
  • Monday 29 Feb 2016: no further questions on the takehome midterm after 3pm today – expect to have last posting the course announcements page caused by such questions made by 5pm today.
  • Tuesday 1 Mar 2016: Take home midterm due in locker by noon today (locker to the cleared before class starts).

16 [W8] Tuesday 1 Mar 2016: Take home midterm was due in locker by noon today

16.1 Reminder

  • Third programming assignment due in two weeks.

17 [W8] Thursday 3 Mar 2016: Take home midterm was due in locker by noon today

18 [W9] Tuesday 8 Mar 2016:

19 [W9] Thursday 10 Mar 2016:

20 [W10] Tuesday 15 Mar 2016: Third programming assignment due

21 [W10] Thursday 17 Mar 2016:

22 [W11] Tuesday 22 Mar 2016:

22.1 Reminder

  • Fourth programming assignment due in two weeks.

23 [W11] Thursday 24 Mar 2016:

23.1 Reminders:

  • Sunday 27 Mar 2016: Easter Sunday according to Academic Calendar Sessional Dates List

24 [W12] Tuesday 29 Mar 2016:

25 [W12] Thursday 31 Mar 2016:

26 [W13] Tuesday 5 Apr 2016: Fourth programming assignment due;

26.1 Reminders:

  • Fourth programming assignment due;
  • Also, final peer group evaluations due.
  • Wednesday, 6 Apr 2016: Last day of classes for this term
  • Thursday, Friday: 7 Apr 2016, 8 Apr 2016: Study days
  • Saturday: 9 Apr 2016: Start of final exam period for this term
  • Saturday: 30 Apr 2016: End of final exam period for this term

_ruler________

Created: 2016-01-09 Sat 20:35

Validate