Dogsled
Light and fast
Yale Computer Science Department
CPSC 427: Object-Oriented Programming

Michael J. Fischer

Course Home Page, Fall 2011

CS Department CS Courses M. Fischer Home M. Fischer Email
Course Home
Syllabus
Handouts
Lecture Notes
Resources
Old Announcements

<< Back

Dog Team
Powerful

Recent Announcements:

  • 5 Dec. The term project is due on the last day of reading period, which is Friday, December 9. The due date was incorrectly listed on both the project assignment and on the 31 Oct. announcement below. Sorry for the confusion over when the end of reading period is; the Yale College Calendar is clear that it's the 9th. Both announcements have been corrected.

  • 29 Nov. Reminder: Exam 2 will be held at the regular class time and place (2:30-3:45 pm in BCT 102) on Thursday, December 1.

  • 29 Nov. I updated the lecture 23a (.pdf) notes to include the review slides presented in class today, so if you previously downloaded it, you might want to go back and get the current version. Also, lecture 23b (.pdf) will not be covered by the exam since we didn't get to it, but I'll leave the notes on the web site anyway for reference.

  • 27 Nov. Here is the study guide to exam 2 (.pdf) which you might find helpful in preparing for Thursday's exam.

  • 8 Nov. I posted the notes and demos from today's lecture 19 (.pdf). Both have been corrected and/or expanded from what I showed in class, so take a look at them.

  • 1 Nov. A couple of people have noticed that the grow() function of FlexArray does not correctly manage memory and will trigger valgrind errors if ever called. This code resulted from a mistaken attempt to make FlexArray usable with all element types, not just with ones supporting value semantics.

    I've corrected the file flexT.hpp in the directory /c/cs427/assignments/ps4 on the Zoo. You may use either the old or the new version in solving Problem Set 4 (.pdf). It shouldn't materially affect your answers, although the new code might be a little slower than the old. I kept the old version as flexT.hpp.OLD for reference (and so you can apply diff -w to the two versions to see exactly what was changed).

  • 31 Oct. Term Project Assignment (.pdf).

    • A one-page project proposal is due on Sunday, November 13. It should be submitted online as assignment number "8-proposal"

    • The completed project and report are due on the last day of Reading Period, Thursday, December 8 Friday, December 9. They should be submitted online as assignment number "9-project".

      This deadline cannot be extended except by a Temporary Incomplete authorized by the student's residential college dean.

    If you are not certain what would make a good term project, please ask.

  • 29 Oct. The code directory /c/cs427/assignments/ps4 on the Zoo is also accessible via the web at URL http://zoo.cs.yale.edu/classes/cs427/2011a/assignments/ps4/.

  • 28 Oct. I've made a few changes to tester.cpp in the directory /c/cs427/assignments/ps4 on the Zoo. You should use the new version in solving Problem Set 4 (.pdf). I renamed the old version to tester.cpp.OLD for reference (and so you can diff it with the new version to see exactly what was changed).

    The changes and the reasons for making them are as follows:

    1. I set defaultIterations to 1 million. This is still large enough to get interesting test results, but you won't spend so much time waiting for your code to run.

    2. I changed runAllTests() to run each test twice. You will notice some cases where the second run is considerably faster than the first. This is most likely due to the way the operating system manages memory. The first run will increase the size of the working set of memory pages to what is needed for the test. The second run will reuse that memory and thereby save time in the kernel for allocating new pages to your process.

    3. I changed the code in test2() to append new cells to the tail of the list instead of to the head. This way, a subsequent scan of the list produces the numbers in the same order as they were inserted, and the same order that they are stored in the array in test1(). Without this change, you would get different checksums for test1() and test2() since the elements would appear in opposite orders.

    I also want to clarify how to compute the checksum. While I gave a recursive definition of the mathematical function to be computed, I intend for you to compute it iteratively with a loop that runs through the numbers in the stored list. Namely, in the ith iteration, the new checksum is computed by the formula (x XOR rot5(c)), where x is the ith number in the list and c holds the checksum of the first i-1 elements.

  • Problem Set 4 (.pdf) is available. It is due before midnight on Sunday, November 6.
  • 27 Oct. Problem Set 4 (.pdf) is available. It is due before midnight on Sunday, November 6.

  • 8 Oct. I've just posted a study guide to exam 1 (.pdf) which you might find helpful in preparing for Thursday's exam. Please let me know if I have inadvertently included sections of the textbook that we simply haven't covered in lecture.

  • 6 Oct. I just learned that the Zoo computers are using version 4.5.1 of the Gnu C++ compiler. This compiler supports the command line argument -std=c++0x, but the new standard had not been finalized when the compiler was released, and it seems not to support the new keyword nullptr. Therefore, you should continue using NULL for the null pointer and ignore the requirement in Problem Set 3 (.pdf), section 2.2, guideline 6, that asks you to do otherwise. The just-posted revision 1 eliminates that requirement.

  • 30 Sep. Problem Set 3 (.pdf) is available. It is due before midnight on Friday, October 7.

  • 26 Sep. Exam schedule:

    1. Thursday, October 13.

    2. Thursday, December 1.

    Both exams will be held at the regular class time and place (2:30-3:45 pm in BCT 102).
  • 26 Sep. I've changed the program used to generate the sample output in yesterday's handout. It now resets RandBit before and after each of the two tests in debug mode. This means that the sequence of bits printed under "Testing RandBit" are the same ones that are used to generate the coin flips printed under "Testing Coin flips", which in turn are the same ones used for the actual simulation run. The output from the new program replaces the sample output in the handout, "Remarks on Problem Set 2 (.pdf)". The revised handout is labeled "Handout #5 (rev. 1)".

  • 25 Sep. Please see Remarks on Problem Set 2 (.pdf) for additional information and hints on the current homework assignment. The assignment purposely gives you a lot of latitude in working out your design. These remarks should just be interpreted as guidance if you are having trouble getting your program working. If you have already succeeded in solving the problem in some other way that is consistent with the original assignment, you do not need to change your code. As always, please feel free to email me with any questions, either about the assignment or about the technical material.

  • 19 Sep. Problem Set 2 (.pdf) is finally available. It is due before midnight on Wednesday, September 28. There is a lot of new material here. Please feel free to ask about anything you don't understand.

  • 16 Sep. One of the students pointed out that there is a bug in DataPack::readData() which causes the last record to read incorrectly when the file contains exactly LENGTH == max data items. I will post corrected code eventually, but for PS1, simply make sure that LENGTH is strictly greater than the file size, i.e., at least 101 in order to read the supplied data set. Sorry if this caused you to waste time looking for non-existent bugs in your own code.

  • 15 Sep. I just posted the slides for today's lecture 5 (.pdf).

  • 8 Sep. Several announcements:

    • Problem Set 1 (.pdf) is now available. It is due before midnight on Friday, September 16.

    • Instructions for connecting remotely to the Zoo are in handout 3 (.pdf).

    • Notes from today's lecture along with draft copies of next week's lectures and demos are available on the Lecture Notes page.

    • TA office hours are posted below.

  • 6 Sep. Click on Lecture Notes for links to the first week of lecture notes and class demos.

  • 1 Sep. Welcome to the CPSC 427a web site. Look here for announcements and course materials.

  • [Old Announcements]

Instructor
Name: Michael J. Fischer
Email: fischer-michael@cs.yale.edu
Office: AKW 408
Phone: 203-432-1270
Hours: By appointment
Teaching Assistant
Name: Donya Quick
Email: donya.quick@yale.edu
Office: AKW 403
Phone: 203-432-6495
Hours: Tuesday 4pm—5pm
Wednesday 1:30pm—3:30pm

Comments about this website should be directed to M. Fischer