CS 144
Programming
Languages
Syllabus , Winter 2007
athena.union.edu/~hemmendd/Courses/cs370
Prof. Hemmendinger hemmendd[@union.edu] 221 Steinmetz Hours: MW 12:30-2:30 388-6319 and by appointmentTexts
|
Programming Languages: Principles and Paradigms, 2nd ed., Tucker and Noonan, McGraw-Hill, 2007 (optional) Elements of ML Programming, Jeffrey Ullman, Prentice-Hall, 1997. |
|
• |
understand basic programming-language paradigms: procedural, object-oriented, functional, logic, including their strength and weaknesses. |
|
• |
be able to describe programming language syntax with formal notation |
|
• |
be able to read semantic specifications for programming languages |
|
• |
understand the design of imperative programming languages |
|
• |
understand the run-time environment of imperative and object-oriented languages, including memory-management. |
|
• |
understand type-systems in functional and object-oriented languages |
Specific topics: Data abstraction; basic ADTs such as stacks, queues; recursively defined datatypes such as binary and general trees; recursive subprograms; understanding of program design and testing methods, and of program documentation standards.
General: Ability independently to design, write, debug, and test a C++ or Java program of the size assigned in CS 77. Ability to use Unix systems, including editors and compilers, and to get information from man-pages and other sources to answer questions that arise during their use.
2. Math 199Specific topics: Basic set concepts; functions as mappings between sets, cartesian products; propositional and elementary predicate logic; proof methods, especially mathematical induction.
Assignments and grading|
(22%) |
About eight homework exercises, which will include textbook exercises and programming in ML, Java, and perhaps Prolog or Scheme. Every programming assignment solution must contain the output from an appropriate set of tests to show that the program meets its specification. All programs must be documented, and all output or other results fully explained. |
|
(50%) |
Closed-book midterm (24%) and final exams (26%). You may bring with you one 8.5"×11"sheet of notes to use during the midterm, and two such sheets of notes for the final. |
|
(28%) |
Three programming assignments in ML or other languages |
The assignments in this course are intended to help you to think about programming language design and implementation. All of the work that you turn in for grading must be your own. If you discuss the homework with others, what you write up and turn in must still be done entirely on your own. The programming assignments will not be appropriate for group work. If two or more people turn in the same homework or programs, they will receive grades of 0 for that work, and further joint work will lead to their being dropped from the course. If you are uncertain about what constitutes undue cooperation, please discuss it with me. Please also review the college policy on academic honesty.
Printed copies of projects and homework are due at the start of the class on the specified date. Homework turned in after the start of class on the due date but before the start of the next class will receive half-credit, but after that time, no credit, since solutions will be available then. Late projects will be subject to a 10% penalty per calendar day.
All programs, including homework, must be properly documented and be formatted according to standard indentation practices. Be sure that there are no long lines that are wrapped or truncated (this means that you’ll have to insert carriage-returns rather than rely on a word-processor to format lines). Use only a constant-width font (Courier, typewriter) for programs. Programs that don’t meet these requirements will be marked as late and returned for resubmission.
The grade scale will be no stricter than A: ≥90,B: 80−89.9, C: 70−79.9,D: 60−69.9,F: <60.
You should plan to spend about 10 hours of work per week on this course outside class.
Languages and LabsThe course will use Standard ML for programming during the first half of the term. During the second half we shall use other languages (Scheme, Prolog, ...) for some assignments. The Olin 110 CS lab (Windows and Linux) and Pasta lab (Linux) have Standard ML of New Jersey (SML/NJ) (sml), which is also available for for downloading to PCs (IBM and Apple). The Pasta lab has GNU prolog (gprolog); information on other languages will come later. The Linux systems have the usual editors, emacs, vi, pico, kedit.
The public directory for the course is antipasto:/home/csc370pub. It contains or will contain homework solutions, lecture notes, examples from the text, and other programming examples.
Approximate ScheduleTo benefit from the texts, you’ll need to read them before class discussion. Read chapters 1-6 of the ML book or the "Gentle introduction to ML that’s on the Web as soon as possible, so that you can use them as references for the program assignments. Further readings will be recommended later.
Week of Topic Readings (Tucker and Noonan) homework due (Wednesdays) Jan. 3 PL background; intro to FP ch 1 Jan. 8 syntax, more FP ch 2, 3.1-3.2 hw 1 Jan. 15 names ch 4 hw 2 Jan. 22 types, type systems ch 5-6 hw 3 Jan. 29 semantics ch 7.1-7.5, 7.7 hw 4; project 1 (Mon.)) Feb 5 semantic interpretation ch 8 Feb. 5 midterm Feb. 12 semantics, functions ch 9 hw 5 Feb. 19 ADTs, object-oriented languages ch 11.1-11.2,12.1, 13.1-13.3 hw 6, project 2 (Fri.) Feb. 26 other functional languages ch 14 hw 7 Mar. 5 logic programming ch 15 hw 8 Mar.12 TBA project 3 (Mon)