CPSC 201: Introduction to Computer Science

 

Instructor: Carsten Schürmann
Department of Computer Science
Yale University
Time: MWF 11:30-12:20
Room: TBA

  Home
  Schedule
  Handouts
  Assignments
  Projects
  Links
 
 

News

The tournament is over. Congratulations to Andrew who beat Semih in an incredibly exciting final match. Also congratuations to all other players who participated. Your implementations were fantastic.

The tournament was played in the following way. Each match consisted of two games, with each of the contestants opening the game with white. If somebody won boths games, he would progress to the next round, in the case of tie, we would take the total score into account. We started with the quarter finals, and by elimination find the winner.

The eight compilable and runnable contestants were Andrew, Matt, Semih, Fitzy, Daniel, Lea, Patrick, and Vishal.

Quarter Finals

  • Andrew vs. Daniel: Match 1, Match 2. Daniel played very strong, but unfortunately dropped a fourth knight on the board which was against the rules. Andrew won, Daniel was disqualified.
  • Lea vs. Matt: Match 1, Match 2. Lea's implementation played very strong, for the longest time, but suddenly, it made a wrong move in Match 1, and forgot to terminate in Match 2. Matt won, Lea was disqualfied.
  • Patrick vs. Semih: Match 1, Match 2. In both games, Patrick wanted to move a knight that didn't exist. Therefore, Semih won, and Patrick was disqualified.
  • Vishal vs. Fitzy: Match 1, Match 2. This was a tricky one. In the first game, Vishal crashed, understandably so, it was getting late (it was almost midnight). And even worse, in the second, Vishal thought too long about where to put the first move. Therefore, Vishal was disqualified, and Fitzy one.
  • Semi Finals

    Four contestants made it into the semi finals. Fitzy, Matt, Semih, and Andrew. Here are the results.
  • Fitzy vs. Andrew: Match 1. Match 2, Unfortunately, Fitzy was disqualfied as well. After a fantastic match where Andrew could secure a 38 point lead over Fitzy, Fitzy picked an invalid opening move in Match 2. And he looked so promising. Andrew won and moves into the final.
  • Matt vs. Semih: Match 1. Match 2. What a game, Semih and Matt worked very hard. The first game, Semih could decide for himself with a staggering 45 point lead over Matt (95-50). In the second game, Matt rebounded (56-51), but 5 points were not enough to catch Semih, who is going into the final. Good job Matt.
  • Final

    The final was scheduled for this afternoon, and what a final it was. Andrew and Semih were both well prepared and ready to play their best. Andrew's strategy was always to go for points, Semih seemed to prefer to prevent his opponent from building to large, and too high. At 12:37, Andrew is making the opening move, builds immediately for height and surface, when Semih tried to get a piece of the cake. Semih's strategy worked, and he could claim a 8 point lead over Andrew (44:52) (Match 1). But Semih is much better in defense than offense, as the second match showed. Semih manovered himself into a losing situtation early on in the game, by giving Andrew the opportunity to raise a private, protected, unreachable, ever-growing tower in the lower right corner of the board. Actually, Andrew managed to build up and place to knights on two towers of height 8, while Semih could not prevent him reaching his goal. Andrew won Match 2 with a stunning 148:59 over Semih. Quite impressive.

    Other News

    Finals are graded. Send me email if you are interested how you did.

    Final location: Becton CO31.

    Review sessions. Monday, 7pm, AKW200 (with Andrew). Tuesday, 10am, Au bon pain (with Robert).

    The new release of Torres is 1.06. It now knows how to compare scores.

    The new release of Torres is 1.05. It now detects inital faulty moves. To install this latest version: "cp /c/cs201/lib/ass8/INSTALL .", and then run "./INSTALL".

    The final from last year can be found here, its solutions here.

    New version Torres (1.03) available. Please download. Here's how you do it. Copy the files into your working directory with cp /c/cs201/lib/ass8/* . To upgrade to future releases, you can simply type INSTALL. Here's the compressed file Torres 1.03 with the sources.

    The Torres source code is updated, and ready for the tournament. Please copy from the course directory.

    Here is a list of answers to frequently asked questions about Torres.

    Code from class today is online : 33.sml.

    Assignment 8 is online.

    Solution to Assingment 7 is online.

    Here's the a pointer to the paper I referred to in class Robert Harper: Functional pearls. Proof directed debugging.

    Assignment 7 is online.

    Code from class today is online : regexp.sml.

    Assignment 6 is online.

    The code for our Turing machine language simulator is now online.

    Here's the midterm and here are the solutions.

    Addition to homework 5: storeI is required to solve this problem. It is defined dually to loadI. Please add a case to the simulator to run your code. This should not be difficult.

    The code for our machine language simulator is now online.

    Robert Lee will hold a review session Wednesday 4-6pm at Au Bon Pain.

    Assignment 5 is online. It's due Wednesay after the midterm. Try to solve it before!

    Here are practice midterms from Fall 2001., Spring 2002, solutions.

    Class takes place today Monday 2/17/2003.

    Assignment 4 is online.

    Andrew's office hours have moved to Monday 5:00pm.

    Notes on induction by Michael Erdmann can be found here.

    Assignment 3 is online.

    I have updated assignment 2.

    Classes meet in AKW 200 from today on.

    Code of the first recitation

    Recitation schedule: Thursday 2:30 AKW500 (with Robert Lee), Thursday 5:00 AKW 500 (with Andrew McCreight).

    Typo in Question 2: Use a function

    id (n1, n2, n3) = c1 ^ n1 * c2 ^ n2 * c3 ^n3
    For exponentiation, simply use:
    fun exp x n = if n = 0 then 1 else (exp x (n-1)) * x

    Hand-in instructions for homework: In the course directory /c/cs201/bin, there are five programs that support you in submitting your solution to the homework.

    • submit assignment-number file(s)
    • unsubmit assignment-number file(s)
    • check assignment-number
    • protect assignment-number file(s)
    • unprotect assignment-number file(s)
    submit allows you to submit one of several files. For example

    /c/cs201/bin/submit 1 hw1.sml hw1-examples.sml

    submits your file hw1.sml and hw1-examples.sml. check can give you the peace of mind that your solution has really been submitted, and if you would like to make last minute changes to your solution, use unsubmit before submitting the updated version. protect and unprotect give you the power to protect/unprotect submitted solutions from deletion.

    For questions, discussions, ..., please use the newsgroup yale.cs.cs201

    The bookstore told me that Elements of ML is going to be in store either tomorrow or Thursday.

    Textbooks

    The following textbooks are required:
    • Jeffrey Ullman, Elements of ML programming.
    • Michael Schneider and Judith Gersting. An Invitation to Computer Science, Java Version. (Should be available at the Yale Bookstore in a few days).
    Optional reading:
    • Lawrence Paulson, ML for the working programmer.

    Other Resources

    SML
    The SML/NJ basis library manual can be found here. It summarizes the functionality built into SML/NJ.
    Web page
    The course web page is at http://zoo.cs.yale.edu/classes/cs201. It contains various useful materials (including this syllabus) and will be updated regularly
    .
    Logical and physical access to the Zoo
    The Zoo is a collection of computers located on the 3rd floor of AKW at the front of the building. You will need a course account on the Zoo to submit homework after the first assignment. Sign up for a CS 201 course account on the Zoo using the on-line signup procedure at http://zoo.cs.yale.edu/accounts.html. There will be help sessions on using the Zoo during the first week of classes. A Zoo tutorial will be distributed in class and is available on-line from the handouts section of the course web page: [Handouts]. For after-hours and weekend physical access to the Zoo machines, you will need to get your ID validated by signing up in class or at 009 AKW.
    Course directory
    The course directory, /c/cs201 is accessible from your Zoo course account. It contains copies of handouts, including homework assignments in machine-readable form.
    Newsgroup
    The newsgroup for the course is yale.cs.cs201.

    Course Requirements

    The course requirements consist of (more-or-less) weekly programming assignments in ML and occasional written homework, a midterm, and a final examination, which takes place some day after reading week. Plan on spending between 6-8 hours per week on the course outside of class. The programming assignments are an integral part of the course.

    Please don't leave the homework to the last minute. You will be more efficient, learn more, have more chance to get help, and generally be calmer and happier if you do the associated reading first and start the programming or other problems early. Note that overcrowding in the Zoo, broken printers, etc. are not unheard of the night before an assignment is due, and will not be accepted as excuses for late homework.

    Recitations

    Recitations are an important supplement to this class. A TA will discuss problems related to class.

    Hand-in instructions

    In the course directory /c/cs201/bin, there are five programs that support you in submitting your solution to the homework.
    • submit assignment-number file(s)
    • unsubmit assignment-number file(s)
    • check assignment-number
    • protect assignment-number file(s)
    • unprotect assignment-number file(s)
    submit allows you to submit one of several files. For example

    /c/cs201/bin/submit 1 hw1.sml hw1-examples.sml

    submits your file hw1.sml and hw1-examples.sml. check can give you the peace of mind that your solution has really been submitted, and if you would like to make last minute changes to your solution, use unsubmit before submitting the updated version. protect and unprotect give you the power to protect/unprotect submitted solutions from deletion.

    Grading

    The final grade in the course will be based on your performance on the programming assignments and other homeworks (50%), the midterm and the final examination (50%).

    Late Policy

    Late work without a Dean's excuse will be assessed a penalty of 10 points per day, based on the day and time recorded by the electronic submit program. If you have a Dean's excuse, making up missed work may involve alternative assignments, at the discretion of the instructor; please check with the instructor in this case.

    Policy on Working Together

    Unless otherwise specified, the homework assignments are your individual responsibility. Plagiarism is a violation of University rules and will not be tolerated. You must neither copy work from others nor allow your own work to be copied.

    You are encouraged to ask others for help with the computers and Unix, with questions about ML, general questions about the concepts and material of the course, or with casual questions about your program, but if you need more extensive help with a program or other assignment, please ask a TA or the instructor for assistance. Working in groups to solve homework problems is not permitted in this course. Please talk to the instructor if you have any questions about this policy.

    Teaching Staff

    Office Hours Recitation
    Carsten Schürmann Monday, 1:30pm - 2pm, AKW309
    Wednesday, 1:30pm - 2pm, AKW309
    or by appointment.