Programming Languages
Lecturer:
Prof. Daniel R. Schlegel, 395 Shineman Center, daniel.schlegel@oswego.edu
Office/Lab hours: Monday 4pm-5pm; Tuesday 4pm-5pm; Friday 10am-11am
Section 810: TTh 2:20-3:40pm, Shineman 174
Course Description:
This course introduces programming language concepts including design, syntax, semantics, pragmatics, implementation, and evaluation. Students will become familiar with the different categories of languages, including procedural, functional, object-oriented, logic, and concurrent programming paradigms. Theoretical topics will be covered in class, and students will complete projects on their own in several languages. The intention is that after this course the student will be able to quickly begin using new languages simply from an understanding of the syntax and a list of concepts used in that language.
If you have not received a C- or better in both CSC241 and CSC221 I do not recommend taking this course.
Textbooks:
Required: Scott, Michael L., Programming Language Pragmatics 4e. Morgan Kaufmann, 2016
Recommended: Tate, Bruce, Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages. Pragmatic Bookshelf, 2010
Useful Resources:
C/C++
C Tutorial at tutorialspoint
C FAQ
Advanced C Programming on Lynda.com
Clojure
Clojure for the Brave and True
Reference Materials at Clojure.org
Clojure API
ClojureDocs
Clojure on Lynda.com
Scala
Scala Tutorials
Scala for Java Programmers
Scala on Lynda.com
Prolog
Using the SWI-Prolog REPL
SWI Prolog Reference Manual
Clocksin, W.F, and C.S. Mellish, Programming in Prolog 5e, 2003 – Chapter 1 (see Blackboard)
Prolog Tutorial
Python
Python 2.7 Tutorial
Python 3 Tutorial
Python Projects on Lynda.com (includes Eclipse PyDev setup tutorial)
Attendance Policy and Classroom Etiquette:
As per college policy, attendance in all sessions is obligatory. If you cannot attend a class meeting due to religious, athletic, health related circumstance, or circumstance of particular hardship, please notify me in advance via email. Please be ready to present proof, if necessary. Cell phones and headphones should not be out or used during lecture, and laptops should only be used for taking notes (I don’t recommend this). If use of any electronics becomes districting to other students I reserve the right to discontinue the allowance of their use.
Assignments:
All assignments will be completed alone, but working together without writing or sharing code to come up with general solutions is encouraged. There will be 5 large projects, due typically two weeks after assignment. Each project will have an associated microproject, due before the larger project, meant to exhibit the use of some language features important to the larger project. The assignments are difficult, and I recommend starting work on them early, avoiding any tendency toward procrastination. You should plan on spending at least 10 hours per week on course work outside of class.
Grading:
Projects must be satisfactorily demoed in person, then submitted on Blackboard, to receive any credit. Partial solutions will not receive any credit. The late penalty will be 5% per day. Microprojects must be submitted via Blackboard, and will not be accepted late (they do not need to be demoed).
It is expected that each person participate during each class. As discussed above, attendance is required.
Each exam question will be assigned a point value (generally some multiple of 3 depending on difficulty), where the following scheme will be used in grading it:
0 – Did not attempt / No serious attempt
1 – Mostly incorrect solution
2 – Somewhat incorrect solution
3 – Perfect solution
If the problem is a multiple of 3, then intermediate scores will be given as appropriate. The total points received on all questions will then be summed and divided by the points possible and scaled as appropriate according to the percentages given below.
Projects | 55% |
Micro-Projects | 10% |
Progress Reports | 5% |
Midterm Exam | 10% |
Final Exam | 20% |
The default grading for the course will be along the university’s standard grading curve:
A: 93-100 | C+: 77-79 |
A-: 90-92 | C: 73-76 |
B+: 87-89 | C-: 70-72 |
B: 83-86 | D+: 67-69 |
B-: 80-82 | D: 60-66 |
E: 0-59 |
A more generous curve may be used, but should not be expected.
Schedule/Outline:
During the semester we aim to cover the following topics:
Language Specification and Implementation
Syntax, Semantics, and Pragmatics
Names, Scope and Binding
Control Flow
Type Systems and Type Safety
Subroutines
Language Paradigms (including imperative, logic, functional, scripting, concurrent, and object oriented)
This syllabus and the course schedule are subject to change by the instructor. All changes and related justification will be announced in class, and updates will be reflected in this web version.
Lecture slides will be maintained on Blackboard, but many lectures will include use of the whiteboard which may not be reflected in notes elsewhere.
Week | Day | Date | |
---|---|---|---|
1 | Tuesday | 8/29 | First day of class Syllabus, Overview Readings: PLP Chapter 1 |
Thursday | 8/31 | No Live Class Meeting How PLs Work (Panopto); BNF and Parsing (Panopto) Readings: PLP 2.1; C Tutorial |
|
2 | Tuesday | 9/5 | No Live Class Meeting C BNF and Operator Precedence (Panopto) C BNF C Operator Precedence |
Thursday | 9/7 | Add deadline Pointers and Memory Allocation C Pointer Demo Assignment 1 due (demoed) 9/20; Microproject due on Blackboard 9/11 11:59pm Readings: PLP 3.1-3.2 |
|
3 | Tuesday | 9/12 | Heap Allocation & Garbage Collection Java GC |
Thursday | 9/14 | Progress Report 1 Functional Programming; Lambda Calculus Readings: Chapter 1 of Introduction to Lambda Calculus |
|
4 | Monday | 9/18 | Drop deadline |
Tuesday | 9/19 | Clojure Introduction Console Trace from Class Readings: Begin reading Clojure for the Brave and True |
|
Thursday | 9/21 | Rosh Hashanah - No Class | |
5 | Tuesday | 9/26 | Clojure Introduction Continued - Example Program: Monty Hall Problem Simulation Substitute and Deep Substitute Assignment 2 due (demoed) Microproject due on Blackboard 9/29 11:59pm |
Thursday | 9/28 | Class Cancelled | |
6 | Tuesday | 10/3 | Names, Scopes, and Bindings Intro Readings: PLP 3.3-3.6 |
Thursday | 10/5 | Progress Report 2 Declaration Scope |
|
7 | Tuesday | 10/10 | Dynamic Scope Scala Intro (A Scala Tutorial for Java Programmers) Console Trace from Class Readings: PLP 7.1-7.2 |
Thursday | 10/12 | Types & Type Systems Optional Types Assignment 3 due (demoed) Microproject due on Blackboard 10/17 11:59pm |
|
8 | Tuesday | 10/17 | Type Checking Propositions as Types by Philip Wadler Readings: PLP Chapter 12, including the supplementary material. |
Thursday | 10/19 | Midterm Exam | |
9 | Tuesday | 10/24 | Progress Report 3 Prolog / Logic Programming Unification Readings: Programming in Prolog Chapter 1 (on Blackboard) |
Thursday | 10/26 | Prolog, cont'd | |
Friday | 10/27 | Withdraw deadline | |
10 | Tuesday | 10/31 | Prolog, concluded Farmer, Goat, Wolf, Cabbage in Prolog Assignment 4 due (demoed) Microproject due on Blackboard 11/5 11:59pm |
Thursday | 11/2 | Object Orientation Python's Kinds of Functions |
|
11 | Tuesday | 11/7 | Dan at AMIA |
Thursday | 11/9 | In-Class Work Period | |
12 | Tuesday | 11/14 | Python, contd. Static vs. Dynamic Method Binding Readings: PLP 10.4-10.6 (including supplemental material) |
Thursday | 11/16 | Progress Report 4 Multiple Inheritance / Diamond Problem The Story of Traits by Venkat Subramaniam |
|
13 | Tuesday | 11/21 | Assignment 5 due 12/14, demoed by 4PM. Microproject due 11/28, 11:59PM on Blackboard 12/14 is the last day any assignments will be accepted Generics and Templates |
Thursday | 11/23 | Thanksgiving Recess - No Class | |
14 | Tuesday | 11/28 | Scripting Languages (on Panopto) |
Thursday | 11/30 | Modules Project Jigsaw Quick-Start Packages - Common Lisp HyperSpec A Crash Course in ML Modules Signatures and Structures in ML Some time to discuss and work on projects |
|
15 | Tuesday | 12/5 | Progress Report 5 Concurrency |
Thursday | 12/7 | Last day of class Guy Steele & Richard Gabriel - 50 in 50 Final Exam Study Guide |
|
Finals Week | Tuesday | 12/12 | Final Exam, 2-4PM, 174 Shineman |
Academic Integrity:
While it is acceptable to discuss general approaches with your fellow students, the work you turn in must be your own. You may not turn in code found on the internet. If you have any problems doing the assignments, consult the instructor. Please be sure to read the webpage, “Academic Integrity“, which spells out all the details of this, and related policies. See my page on plagiarism for an explanation of what I consider cheating.
Disability Statement:
If you have a disabling condition, which may interfere with your ability to successfully complete this course, please contact the Office of Disability Services at dss@oswego.edu and x3358.