Announcements |
Lectures |
Written Assignments |
Programming Assignments |
Exams |
Cool
CS 415 - Programming Languages - Programming Assignments
Instructions
Start the programming assignments early! Completing the course
project is a large, complex, and rewarding task, which is made much easier
by giving adequate forethought to design. The course schedule allows ample
time to complete the assignments -- take advantage of it.
Documentation and structuring should be incorporated into programs from the
beginning. Neither instructors nor teaching assistants will help with
incomprehensible programs.
I highly recommend that you find an account on a Unix (or Mac OSX) machine
or that you install Cygwin on your
Windows machine.
The instructional lab machines should have OCaml, Ruby and Python
pre-installed.
Language Guides
Ocaml. Start with Jason Hickey's Introduction to Objective CAML
and move on to
the
official OCaml tutorial.
Ruby. You might consider
the
official Ruby in Twenty Minutes.
Python. Try the
official Beginner's Guide or Guido's Tutorial.
Cool. See the course webpage on Cool.
C. Google for "C tutorial" or somesuch. For example, try this tutorial from Drexel University.
PA1: The Rosetta Stone
- Project Handout (also covers PA0)
- Project Files
- pa1-hint.zip - Shows the same
simple program written in five languages.
- pa1-testcases.zip - Gives five
"starter" testcases to help you evaluate your work.
- Grading (out of 50)
- 40 points - for autograder tests (8 points per language)
- 5 points - for a valid PA0 submission
- 4 points - for a clear description in your README
- 4 - thorough discussion of design decisions (including language
comparisons) and choice of test cases; a few paragraphs
of coherent English sentences should be fine
- 2 - vague or hard to understand; omits important details
- 0 - little to no effort
- 1 point - for a valid testcase.list file
PA2: The Lexer
- Project Handout
- Grading (out of 50)
- 38 points - for autograder tests (1 point per correct test,
maximum score of 38)
- 4 points - for a clear description in your README
- 4 - thorough discussion of design decisions (including handling
of strings and comments) and choice of test cases; a few paragraphs
of coherent English sentences should be fine
- 2 - vague or hard to understand; omits important details
- 0 - little to no effort
- 4 point - for valid good.cl and bad.cl files
- 4 - wide range of test cases added, stressing most Cool features
and an error condition
- 2 - added some tests, but the scope not sufficiently broad
- 0 - little to no effort
- 4 point - for code cleanliness
- 4 - code is mostly clean and well-commented
- 2 - code is sloppy and/or poorly commented in places
- 0 - little to no effort to organize and document code
PA3: The Parser
- Project Handout
- Grading (out of 50)
- 38 points - for autograder tests (1 point per correct test,
maximum score of 38)
- 4 points - for a clear description in your README
- 4 - thorough discussion of design decisions (e.g., the handling
of let) and choice of test cases; a few paragraphs
of coherent English sentences should be fine
- 2 - vague or hard to understand; omits important details
- 0 - little to no effort
- 4 point - for valid good.cl and bad.cl files
- 4 - wide range of test cases added, stressing most Cool features
and an error condition
- 2 - added some tests, but the scope not sufficiently broad
- 0 - little to no effort
- 4 point - for code cleanliness
- 4 - code is mostly clean and well-commented
- 2 - code is sloppy and/or poorly commented in places
- 0 - little to no effort to organize and document code
PA4: The Semantic Analyzer
- Project Handout
- Grading (out of 100)
- 76 points - for autograder tests
- 8 points - for a clear description in your README
- 8 - thorough discussion of design decisions (e.g., handling
of the class hierarchy, case and new and dispatch)
and choice of test cases; a few paragraphs of coherent English
sentences should be fine
- 4 - vague or hard to understand; omits important details
- 0 - little to no effort
- 8 point - for valid good.cl, bad1.cl,
bad2.cl and bad3.cl files
- 8 - wide range of test cases added, stressing most Cool features
and three error conditions
- 4 - added some tests, but the scope not sufficiently broad
- 0 - little to no effort
- 8 point - for code cleanliness
- 8 - code is mostly clean and well-commented
- 4 - code is sloppy and/or poorly commented in places
- 0 - little to no effort to organize and document code
- (The "PA4 Semantics Checkpoint" counts as a Written Assignment
and is graded separately.)
PA5: The Interpreter
- Project Handout
- Grading (out of 100)
- 76 points - for autograder tests
- 8 points - for a clear description in your README
- 8 - thorough discussion of design decisions (e.g., the handling
of let and new and dispatch)
and choice of test cases; a few paragraphs of coherent English
sentences should be fine
- 4 - vague or hard to understand; omits important details
- 0 - little to no effort
- 8 point - for valid test1.cl, test2.cl,
test3.cl and test4.cl files
- 8 - wide range of test cases added, stressing most Cool features
and some error conditions
- 4 - added some tests, but the scope not sufficiently broad
- 0 - little to no effort
- 8 point - for code cleanliness
- 8 - code is mostly clean and well-commented
- 4 - code is sloppy and/or poorly commented in places
- 0 - little to no effort to organize and document code