CS320 Principles of Programming Languages Fall 2019
- Email: email@example.com
- Office Hours: (FAB120-23) Tu1-2pm or by appointment.
- D2L site for lecture notes,
lab/homework handouts, homework submission, and grading feedback.
channel for informal communication and questions about the
course. Use it freely. The instructor and TAs will monitor it
regularly and jump in when that seems useful.
- Course Information
Course Catalog Description
Syntax and semantics. Compilers and interpreters. Programs as data. Regular expressions and context free grammars. Programming paradigms, including procedural, functional, and object-oriented programming. Type systems, including dynamic and static typing disciplines. Binding, scope, data abstraction, and modularity. Denotational, operational, and axiomatic semantics. Introduction to program correctness.
There is no required textbook. For those who like having a textbook for reference, the following book is
Kenneth C. Louden and Kenneth A. Lambert, Programming Languages: Principles and Practice
, 3rd ed.,
Course Technology CENGAGE Learning, 2012.
Officially: CS202, and CS251, passed with grades of C or better. CS201 is also strongly
advised. It is assumed that you have substantial programming experience in C++ and some experience in C.
Requirements and Grading
- Weekly lab assignments in form of programming problems or written exercises.
- Midterm exam (in the lecture slot on Nov. 5) and Final exam.
- Makeup of grade:
Labs and Homework
- Concurrent registration in a lab section (CS320L) is required.
- Labs meet in the CS linuxlab (FAB 88-09).
- You should automatically have an account
on the CS linux machines.
- Each lab will have a handout (available on D2L) with exercises.
Handouts will be made available by the Saturday prior to the lab week.
Completed exercises for each week are to be submitted to D2L by
11:59pm on Monday of the week following the lab.
- Exercises may be completed on your own computer or on a CS linux
machine, but they must work on a CS linux machine, which is where
they will be tested and graded.
- Extensions will be given only under extraordinary circumstances; consult the
instructor in advance.
This schedule is tentative and subject to change.
||Course Introduction; Java Introduction; Stack Machines
||Language Syntax; Context-free Grammars; Regular Expressions
||Data types; Type constructors; Recursive types; Garbage collection
||Polymorphism; Generics; Modules; Data Abstraction
||Object-oriented programming; Dynamic vs. static typing
||Control: Statements; Functions; Iterators; Exceptions
||Compilation; Static Analysis; Type checking and Inference
||(Thanksgiving holiday week: no labs)
||Formal Semantics; Program Correctness
||Final exam 10:15-12:05
Java Language Resources
- Quick intro to Java for C++/C programmers
- Oracle documentation for Java 11
- Bruce Eckel, On Java 8 (Free older version for Java 5/6 is Thinking in Java, 4th ed.)
- Arnold, Gosling, Holmes, The Java Programming Language, 4th ed. (For Java 5.)
- Joshua Bloch, Effective Java, 3rd edition
- Herbert Schildt, Java; The Complete Reference, 11th ed.
- Lewis, Loftus, Java Software Solutions
- You are allowed to work together on labs and homeworks. However,
you must prepare and submit your solutions individually.
- Exams must be completed individually without any collaboration.
- Plagiarism or collaborating on an exam will result in an automatic zero grade
and the initiation of disciplinary action at the
Discrimination and Misconduct
- Portland State is committed to fostering a safe, productive learning environment.
Title IX and our school policy prohibit gender or sex-based discrimination and
sexual misconduct (including harassment, domestic and dating violence, sexual assault, and
- We expect a culture of professionalism and mutual respect in our department and class.
You may report any incident of discrimination or discriminatory harassment,
including sexual harassment, to either the
Office of Equity and Compliance
or the Office of the Dean of Student Life.
- Please be aware that members of the faculty have the responsibility to
report any instances of sexual harassment,
sexual violence and/or other forms of prohibited
discrimination to PSU's Title IX Coordinator,
the Office of Equity and Compliance or the Dean of Student Life and
cannot keep information confidential.
- If you would rather share information about sexual harassment or
sexual violence to a confidential employee who does not have
this reporting responsibility, you can contact a confidential advocate at
503-725-5672 or on-line,
or another confidential employee found on
the sexual misconduct resource webpage.
- For more information about your obligations and resources for sex/gender discrimination
and sexual violence (Title IX), please complete the required student module
Creating a Safe Campus
in your D2L.
If you are a student with a disability in need of academic accommodations,
you should register with Disability Services for Students and notify the
instructor immediately to arrange for support services.