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: should read `through the rest after' *) 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

Table 1: Clock summary at [2016-01-12 Tue 15:42]
Headline Time  
Total time 1:41  
[W2] Tuesday 12 Jan 2016: Last day to… 1:41  
  Planning out the semester   0:15
  Reminder   0:22
  Comment on Groups left over from…   0:03
  Test Driven Development/Behavioral…   0:39
  start discussing `Stupid Ruby Tricks'…   0:22

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.
  • Overview the Announcements Page
    • First assignment material available
    • Note: comment on reading last Tuesday's tic tac toe program posted.

3.3 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.4 Test Driven Development/Behavioral Driven Development

  • introduction to rspec (tar of files on Announcements)
  • walk thru demo handout (link to bigger example on Announcements)
  • group task (15 minutes - yes, really) I want to write a program that can efficiently sort an array of integers. This program should return a 2 entry array. The first entry is the sorted version of the array. The second entry is the number of comparison operations that were necessary to do the sort. The ultimate goal is for the number of comparison operations to to be less that twice the size of the array times the log base 2 of the size of the array.

    What sequence of executable behavioral specifications would you use to guide the development of this program? Give rspec-like detail. After 15 minutes we will stop and the group hands in what they came up with so far.

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

3.6 start discussing `Stupid Ruby Tricks' examples

GOT TO LINE 138 IN TRICKS 01

  • overview: now 2 files of tricks
  • these are on the course web page
  • if printed out, would be 11 pages for first file, 7 pages for second.
  • 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?

3.7 material on natural language question from Thursday moved to a file, see Announcements

4 [W2] Thursday 14 Jan 2016:

Table 2: Clock summary at [2016-01-14 Thu 13:39]
Headline Time  
Total time 0:42  
[W2] Thursday 14 Jan 2016: 0:42  
  reminders   0:25
  more on Ruby Tricks   0:17

4.1 check out Tuesday the 12th's clock report

4.2 reminders

4.2.1 what is new on announcements page

  • hopefully everyone has found the textbook link by now (repeated on Tuesday posting)
  • general comments on natural language question
  • note: tar file for org file also contains the different notes: Note160105Line151Question and Note160107NaturalQuestion

4.2.2 re the concept questions.

  • they worked out well, unfortunately I am a bit backlogged at the moment, but hope to post answers to them before the weekend.
  • regarding implicit/explicit questions, I hope discussion of the issue near the end of `Writing That Paragraph 01' helps.
  • same assignment for next tuesday.
    • next week covers Chapter 3. I plan on holding the first practice quiz next thursday, open book/web 1 question, 15 minutes. On textbook from Chapters 1, 2, and up to and including 3.1.
    • 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. Include your uwo email and name on paper handed in, in case I need to reach you.

4.3 more on Ruby Tricks

  • note: last class ended with us on line 138 of tricks 01 139 shows us self, which someone was asking about.
  • 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?

5 [W3] Tuesday 19 Jan 2016:

5.1 reminders (5 minutes):

Today we take a 10 minute break at 1:20 class ends at 2:20

  • This week you are reading Chapter 3 hopefully you finished up through 3.1 by today
  • Hand in your questions on material up to and including Section 3.1
  • I plan on holding the first practice quiz thursday. 1 question, 15 minutes. open book/web On textbook from Chapters 1, 2, and up to and including 3.1.
  • this week is the last week of Ruby. next week we will start on prolog and read Chapter 4. the week after that, we will skip to Chapter 13 on logic programming, which will support our prolog understanding.
  • Chapter 4 actually has interesting questions at the end of the chapter. 3 thru 5, 8, 15 thru 20. the other questions, like most so far are just checking to see if you remember what you read.

5.2 more on Ruby Tricks (15 minutes):

  • note: last class ended with us on line 211 of tricks 01
  • 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?

5.3 Group Programming Task 1 (15 minutes)

5.4 look at paragraph writing material (15 minutes)

  • read question, what is the question asking for
  • create topic sentence, your one sentence response/claim
  • what supports your one sentence response/claim
  • pick a few of the most important supports and build the body of the paragraph around developing each of the supports
  • don't include anything not relevant to the claim
  • conclude with something that follows from the supports and repeats the idea of the initial topic sentence. (note: at this point, the reader knows more about your thinking on the topic than they did at the start of the paragraph.)

5.5 10 minute break (10 minutes)

5.6 Group Programming Task 2 (10 minutes)

5.7 took some more time

  • extra time on each Group task to cover an answer
  • extra time on task 2
  • ended at line 48 of Ruby Tricks 02

6 [W3] Thursday 21 Jan 2016:

6.1 reminders 5 minutes

  • this week's reading was Chapter 3.
  • Tuesday's concept questions were posted with replies Tuesday.
  • First programming assignment due Tuesday (hand in in class or put in locker so that it is there when cleared when I get in Wednesday). Regarding lateness etc., see course outline.
    • read Ruby Project Writeup Format before doing practice and before writing up practice
    • read Announcement's page for discussion of project and announcements of updates.
    • keep eye on Task list for Addendum items
    • so far, there seems to be enough task items to keep people busy for 7 hours. email me if this is not true and more will be added.
  • next week's reading Chapter 4
    • on Tuesday, group will be asked to hand in exercise 4 from Chapter 4. 10 minutes class time will be allocated for sorting out the group answer.
  • bring in concept questions from readings so far Tuesday.

6.2 Ruby Tricks 02 25 minutes (start handing out quiz 11am)

  • last meeting, we were up to line 48
  • line 64 sort, uniq, reverse, reverse!
  • line 77 map, end.reverse
  • line 98 making your own iterator
  • line 120 implementing your own attraccess, classeval
  • line 156 instanceeval
  • line 187 Proc as block replacement
  • line 189 lambdas as Proc
  • line 211 nested class definitions

6.3 Practice Quiz 15 minutes (handout 11, start 11:05)

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

8 [W4] Thursday 26 Jan 2016:

_ruler________

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:

_ruler________

11 [W6] Tuesday 9 Feb 2016:

12 [W6] Thursday 11 Feb 2016:

_ruler________

13 15 Feb 2016 – 19 Feb 2016: Reading Week

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

15 [W7] 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).

_ruler________

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

_ruler________ _ruler________

18 [W9] Tuesday 8 Mar 2016:

19 [W9] Thursday 10 Mar 2016:

_ruler________

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

21 [W10] Thursday 17 Mar 2016:

_ruler________

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

_ruler________

24 [W12] Tuesday 29 Mar 2016:

25 [W12] Thursday 31 Mar 2016:

_ruler________

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-20 Wed 22:52

Validate