course description
From the Catalog: This course is a study of the important concepts found in current programming languages. Topics include language processing (lexical analysis, parsing, type-checking, interpretation and compilation, run-time environment), the role of abstraction (data abstraction and control abstraction), programming paradigms (procedural, functional, object-oriented, logic-oriented, generic), and formal language definition. Prerequisite: CSCI-2400
learning objectives
- Students will learn language processing concepts, including techniques in lexical analysis, parsing, type-checking, and program compilation.
- Students will learn language abstraction concepts, including data abstraction and control abstraction.
- Students will learn and explore numerous programming paradigms, including procedural, object-oriented, functional, and logic-based paradigms.
required textbook
Concepts of Programming Languages, 8th ed. by Robert W. Sebesta. Addison-Wesley, 2008. ISBN 0-321-49362-1.
assignments
Homework assignments and projects are due on the due date specified and will be penalized 10% for each business day (24 hours) late, up to a maximum of 5 days, after which the assignment cannot be accepted for credit.
Instructions for submitting assignments will be available for each assignment.
graduate students and the doctoral qualifying exam
Programming Languages is a qualifying exam course. As such, Ph.D. students registered for CSCI-6969 will be required to perform additional work on projects throughout the semester. More details will be provided as the semester progresses.
exams
There will be a midterm exam and a final exam, both of which will be open book, open notes. Sample exam questions will be provided.
grading criteria
OPTION ONE:
Project 1 ..... 15%
Project 2 ..... 15%
Project 3 (Scheme) ..... 15%
Project 4 (Prolog) ..... 15%
Midterm Exam ..... 20%
Final Exam ..... 20%
OPTION TWO:
Project 1 ..... 12%
Project 2 ..... 12%
Project 2.5 ..... 12%
Project 3 (Scheme) ..... 12%
Project 4 (Prolog) ..... 12%
Midterm Exam ..... 20%
Final Exam ..... 20%
OPTION THREE:
Project 1 ..... 15%
Project 2 ..... 15%
Project 2.5 ..... 10%
Project 3 (Scheme) ..... 10%
Project 4 (Prolog) ..... 10%
Midterm Exam ..... 20%
Final Exam ..... 20%
grading policies
Grades for individual and team-based assignments are determined by the instructor and/or the TAs. Students may appeal a grade by contacting the instructor via e-mail, during class time, or during office hours.
Grades will be provided throughout the semester to provide students with an ongoing assessment of their progress. By mid-semester, students will have some homework and project grades, as well as their midterm exam scores.
attendance & classroom policies
Please attend class and be prepared to participate in class discussions and activities. Please turn off cell phones before class begins.
academic integrity
From The Rensselaer Handbook of Student Rights and Responsibilities (2006-2008): Intellectual integrity and credibility are the foundation of all academic work. Academic dishonesty is, by definition, considered a flagrant offense to the educational process. It is taken seriously by students, faculty, and Rensselaer and will be addressed in an effective manner.
If found in violation of academic dishonesty policy, students may be subject to two types of penalties: the instructor administers an academic (grade) penalty, and the student may be subject to the procedures and penalties of the student judicial system outlined in this handbook.
instructor
NAME: David Goldschmidt, Ph.D.
E-MAIL: click here to send me e-mail
ADJUNCT OFFICE: Amos Eaton 208
OFFICE HOURS: Fridays 11:00am-12:00pm
teaching assistants
NAME: Brian Boodman
E-MAIL: boodmb@rpi.edu
OFFICE: Amos Eaton 217
OFFICE HOURS: Mondays 12:00pm-1:50pm
NAME: Jonathan Purnell
E-MAIL: purnej@rpi.edu
OFFICE: ΣΦΕ Fraternity, 2009 15th Street
OFFICE HOURS: Wednesdays 10:00am-12:00pm
assignments & readings
SCHEDULE: Click here to view semester schedule
READ: Chapters 1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 15, 16
MIDTERM EXAM SOLUTIONS (available outside of Lally 207): a | b | c
DUE Thursday 2/7: Project #1
DUE Tuesday 3/4: Project #2
DUE Friday 4/4: Optional Project #2.5
DUE Friday 4/18: Project #3
DUE Tuesday 4/29: Project #4
FINAL EXAM: Wednesday 5/7 3:00-5:50pm in DCC 318 (Sample Exam Questions)
notes & handouts
- Chapter 1 Notes
- Chapter 3 Notes - Part I
- Chapter 3 Notes - Part II
- Lecture Notes on BASIC and C
- Example C code: characters.c | main.c | getop.c | stack.c
- Chapter 4 Notes - Part I
- Chapter 4 Notes - Part II
- Example lexical analysis C code: lex-v1.c | lex-v2.c | lex-v3.c | lex-v4.c
- Chapter 4 Notes - Part III
- Chapter 3 Notes - Part III
- Chapter 3 Notes - Part IV
- Partial solution to Project #1: basic_proj1_part1.c | basic_proj1_part2.c
- Chapter 5 Notes - Part I
- Chapter 5 Notes - Part II
- Chapter 6 Notes - Part I
- Python Lecture Notes
- Chapter 6 Notes - Part II
- Example Python code: guess.py | jumble.py | Student.py
- Chapter 6 Notes - Part III (Python)
- More Python examples: hangman.py | web.py | blackjack.py
- Chapters 11 & 12 Notes - Part I (StaticQueue.java | Queue.java | QueueV2.java )
- Chapter 15 Notes - Part I (Factorial.java)
- Scheme examples: examples01.scm
- Scheme online book: The Scheme Programming Language by R. Kent Dybvig
- Scheme interpreters: MIT/GNU Scheme | DrScheme
- Chapter 15 Notes - Part II
- More Scheme examples: examples02.scm | queens.scm
- Chapter 16 Notes - Part I (examples: prolog-example-01.pl)
- SWI-Prolog Environment
- Chapter 16 Notes - Part II (examples: prolog-example-02.pl | prolog-example-03.pl)
- Final Notes
topics
- Programming language design
- Language processing
- Interpretation and compilation
- Lexical analysis and parsing
- Type-checking
- Data and control abstraction
- Imperative/procedural languages (C++, Java)
- Functional languages (Scheme/LISP)
- Logic-based languages (Prolog)