Programming Languages
Quick Links: Useful Resources | Grading Summary | Day-by-day Schedule
Lecturer:
Prof. Weihua Liu, PhD, 460 Shineman Center, weihua.liu@oswego.edu
Prof. Daniel R. Schlegel, PhD, 464 Shineman Center, daniel.schlegel@oswego.edu
Office/Lab hours: Daisy – 9:30-11:00 TTh; Dan – M 1-2PM, Tu 11AM-12PM, W 3-4PM
Section 800: MWF 11:30am-12:25pm
Class Location: 122 Shineman Center
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.
Course Objectives:
- To write programs in each of several languages primarily supporting different approaches to programming
- To write programs to process some representation of code for some purpose, such as an interpreter, an expression optimizer, or a documentation generator
- To use the specifications of a given language to determine the syntax and semantics of supported constructions
- To explain and follow the rules governing the use of a given type in a given language
- To obtain the effects of constructions of one language in other languages
- To identify coding errors that lead to insecure programs in non-type-safe languages
- To choose among language-supported approaches to concurrency in a given context, including data-parallelism, message-passing, and explicit threads with shared mutable state
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
Free Online: Slonneger, Kenneth and Kurtz, Barry L., Syntax and Semantics of Programming Languages. Addison Wesley, 1995
Useful Resources:
C
C Tutorial at tutorialspoint
C FAQ
C Language at cppreference
Advanced C Programming on LinkedIn Learning
Clojure
Clojure for the Brave and True
Reference Materials at Clojure.org
Clojure – Getting Started
Clojure API
ClojureDocs
Clojure By Example
Clojure on LinkedIn Learning
OCaml
OCaml Website
OCaml Playground
OCaml Manual
OCaml API
OCaml Programming: Correct, Efficient, and Beautiful (Free Book+Videos)
OCaml From the Very Beginning (Free Textbook)
Answer Set Programming
ASP-Core-2 Input Language Specification
Potassco User Guide
Potassco Documentation
Use clingo Online
Answer Set Programming by Vladimir Lifschitz
Notes on Answer Set Programming by Chris Martens
Python
Python 3 Tutorial
Moving to Python from Other Languages
Python Projects on LinkedIn Learning
Modality:
We meet in person three times a week. There will be no recording, and we won’t work through the content with you in a one-on-one fashion during office hours or an appointment – basically, if you miss class then you missed out on what you signed up for when registering for the class and you will have to work through the content independently. Of course, we will answer questions about the content, if you have any, and there are exceptions for excused absences due to illness etc.
“Go Remote” due to COVID-19: If we are forced to “go remote” for a prolonged period during the semester then we’ll hold class over Zoom and make a Zoom link available on course webpage, as well as email it with the weekly content. This is definitely a sub-par, miserable excuse for a class meeting. We’ll do this only if circumstances force us.
“Go Remote” Days Due to Weather: In short, we value our snow days and will do what is reasonable to make sure that no commuter is in danger, while also maintaining academic integrity. In long, the concept of a “Go Remote” day due to weather is crap. We deserve our snow days. Yes, snow days are a serious inconvenience and create a content crunch, specially if classes are cancelled indiscriminately. But, snow days are also a weather-gifted day of respite and nearly everyone appreciates an occasional day of rest. We may choose to skip certain topics during the semester so that we can afford to cancel class on a “Go Remote” day. If it turns out that many classes are cancelled due to weather, then we will have to assign independent reading / activities to cover some of the content.
Attendance and Participation:
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 us in advance via email. Please be ready to present proof, if necessary. It is expected that each person will come to class prepared, having watched or read any required materials, and will actively engage in each class session.
Classroom Etiquette:
A positive learning environment relies upon creating an atmosphere where all students feel welcome. Discussion is meant to allow us to hear a variety of viewpoints. This can only happen if we respect each other and our differences. Hostility and disrespectful behavior is not acceptable.
Grading:
Grades will be comprised of projects, micro-projects, participation, and exams. A point-based system will be used, where each graded artifact will be assigned a point value and you can simply sum the points to determine your grade.
Assessment | Points |
---|---|
Projects (5) | 500 |
Micro-Projects (5) | 100 |
Participation | 100 |
Quizzes (5) | 100 |
Final Exam | 200 |
Total | 1000 |
The default grading for the course will be along the university’s standard grading curve:
Letter: Points | Letter: Points |
---|---|
A: 930-1000 | C+: 770-790 |
A-: 900-920 | C: 730-760 |
B+: 870-890 | C-: 700-720 |
B: 830-860 | D+: 670-690 |
B-: 800-820 | D: 600-660 |
E: 0-590 |
A more generous curve may be used, but should not be expected.
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 micro-project, due before the larger project, meant to exhibit the use of some language features important to the larger project. Progress reports will be in-class discussions of progress, and happen roughly halfway between the date the assignment is given out, and the date it is due. The assignments are difficult, and I recommend starting work on them as soon as possible, avoiding any tendency toward procrastination. You should plan on spending at least 10 hours per week on course work outside of class.
Projects must be satisfactorily demoed in person during office hours to one of the instructors, then submitted on Brightspace, to receive any credit. Partial solutions will not receive any credit. The late penalty will be 5% per day. Micro-projects must be submitted via Brightspace, and will not be accepted late (they do not need to be demoed).
Quizzes and Exams:
There will be six quizzes given during the semester, of which we will drop the lowest score. There also will be one exam, a final exam given during finals week.
Each quiz/exam question will be assigned a point value, questionPoints, where the following general scheme will be used in grading it:
0 – Did not attempt / No serious attempt / Completely incorrect
1/3 * questionPoints – Mostly incorrect solution
2/3 * questionPoints – Somewhat incorrect solution
3/3 * questionPoints – Perfect solution
Intermediate scores will be given as appropriate. The total points received on all questions will then be summed to determine your score.
Schedule/Outline:
During the semester we aim to cover the following topics:
Language Specification and Implementation
Syntax and Semantics
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 instructors. 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 Brightspace, but much of the in-person content will include use of the whiteboard and/or group discussion which may not be reflected in notes elsewhere.
Week | Day | Date | |
---|---|---|---|
1 | Monday | 8/28 | First day of class Syllabus and Overview How to be successful in CSC344 Reading: PLP Chapter 1 |
Wednesday | 8/30 | Class Cancelled | |
Friday | 9/1 | A Brief History of PLs Reading: Continue Reading PLP Chapter 1; Dijkstra – Go To Statement Considered Harmful |
|
2 | Monday | 9/4 | Labor Day – No Class |
Wednesday | 9/6 | BNF / Parsing Project 1 due (demoed) 9/25, Microproject due 9/13 (on Brightspace) Reading: Read the project description, and start looking at C useful resources |
|
Friday | 9/8 | Memory Management | |
3 | Monday | 9/11 | Writing Secure C Code |
Wednesday | 9/13 | Intro to Functional Programming | |
Friday | 9/15 | Progress Report 1 Quiz 1 |
|
4 | Monday | 9/18 | Quiz 1 Returned BNF Practice |
Wednesday | 9/20 | Lambda Calculus Project 2 due (demoed) 10/9, Microproject due 9/29 (on Brightspace) Reading: PLP 11-11.3; Start reading Clojure for the Brave and True |
|
Friday | 9/22 | Monty Hall Problem Simulation in Clojure | |
5 | Monday | 9/25 | Clojure Substitute Functions |
Wednesday | 9/27 | Type Inference | |
Friday | 9/29 | Simply-Typed Lambda Calculus | |
6 | Monday | 10/2 | Propositions as Types |
Wednesday | 10/4 | Progress Report 2 Quiz 2 |
|
Friday | 10/6 | Types | |
7 | Monday | 10/9 | Project 3 due (demoed) 10/24, Microproject due 10/16 (On Brightspace) Writing Recursive Descent Parsers in OCaml |
Wednesday | 10/11 | ||
Friday | 10/13 | Fall Break – No Class | |
8 | Monday | 10/16 | |
Wednesday | 10/18 | ||
Friday | 10/20 | Scope | |
9 | Monday | 10/23 | Work Day |
Wednesday | 10/25 | Progress Report 3 Quiz 3 |
|
Friday | 10/27 | Declaration Scope | |
10 | Monday | 10/30 | Project 4 due (demoed) 11/14, microproject due 11/6 on Brightspace |
Wednesday | 11/1 | ||
Friday | 11/3 | ||
11 | Monday | 11/6 | Pattern Matching |
Wednesday | 11/8 | Object Orientation | |
Friday | 11/10 | Progress Report 4 | |
12 | Monday | 11/13 | Inheritance |
Wednesday | 11/15 | Inheritance, contd. Project 5 due (demoed) 12/5, microproject due 11/29 on Brightspace |
|
Friday | 11/17 | Work Day | |
13 | Monday | 11/20 | Thanksgiving Recess – No Class |
Wednesday | 11/22 | Thanksgiving Recess – No Class | |
Friday | 11/24 | Thanksgiving Recess – No Class | |
14 | Monday | 11/27 | Scripting Languages |
Wednesday | 11/29 | ||
Friday | 12/1 | Progress Report 5 | |
15 | Monday | 12/4 | Work Day |
Wednesday | 12/6 | Module Systems | |
Friday | 12/8 | Last day of class Final Exam Study Guide |
|
Finals Week | Wednesday | 12/13 | Final Exam 10:30-12:30 |
Academic Integrity:
SUNY Oswego is committed to Intellectual Integrity. Any form of intellectual dishonesty is a serious concern and therefore prohibited. You can find the full policy online. 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. See my page on plagiarism for an explanation of what I consider cheating. All parties involved in academic integrity violations will receive a score of zero for that quiz/exam/assignment, and all violations will be reported. Repeat violations, including across semesters, will result in failing the course.
Accessibility:
If you have a disabling condition which may interfere with your ability to successfully complete this course, please contact Accessibility Resources located at 155 Marano Campus Center, phone 315.312.3358, access@oswego.edu
Clery Act/Title IX Reporting:
SUNY Oswego is committed to enhancing the safety and security of the campus for all its members. In support of this, faculty may be required to report their knowledge of certain crimes or harassment. Reportable incidents include harassment on the basis of sex or gender prohibited by Title IX and crimes covered by the Clery Act. For more information about Title IX protections, go to https://www.oswego.edu/title-