Hi There!

I'm Dan Schlegel, an Associate Professor in the Computer Science Department at SUNY Oswego

CSC344 – Spring 2026

Programming Languages

Quick Links: Useful Resources | Grading Summary | Day-by-day Schedule

Lecturer:

Prof. Daniel R. Schlegel, PhD, 464 Shineman Center, daniel.schlegel@oswego.edu
Office/Lab hours: MWF 11-12
Section 800: MWF 9:10-10:05
Class Location: 172 Shineman Center

Teaching Assistant:

We have a teaching assistant this semester, Ethan Moody. Ethan will hold office hours where he will help you with issues associated with the course and your projects. His office hours are MWF 12:30-2:30 in 425 Shineman.

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 5e. Morgan Kaufmann, 2025
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
C for Java Programmers
C on DevDocs

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
core.logic @ github
A core.logic primer

Scala

Scala Tutorials
Scala for Java Programmers
Scala on LinkedIn Learning

Python

Python 3 Tutorial
Moving to Python from Other Languages
Python Projects on LinkedIn Learning

Modality:

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.

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” 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.

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.

Cell phones and headphones should not be out or used during lecture, and laptops should only be used for taking notes. If use of any electronics becomes distracting to other students I reserve the right to discontinue the allowance of their use.

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.

AssessmentPoints
Projects (5)500
Micro-Projects (5)50
Participation50
Midterm Exam150
Final Exam250
Total1000

The default grading for the course will be along the university’s standard grading curve:

Letter: PointsLetter: Points
A: 930-1000C+: 770-790
A-: 900-920C: 730-760
B+: 870-890C-: 700-720
B: 830-860D+: 670-690
B-: 800-820D: 600-660
 E: 0-590

A more generous curve may be used, but should not be expected.

AI Policy:

AI and large language models (LLMs) may be used only when explicitly allowed in CSC344. This includes the use of services like ChatGPT, Claude, Google’s AI Mode, Google AI Overview, full-line autocomplete and embedded AI assistants in IDEs, and any other place that AIs appear. If AI is explicitly allowed for some part of a project, the details of what is allowed will appear in the project description.

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).

Exams:

There will be two exams given during the semester, a midterm and a final exam given during finals week. Exams will be closed notes.

Attendance and Participation:

As discussed above, attendance is required. Missing more than 6 classes over the course of the semester will result in a letter grade deduction (e.g., B+ to C+). Participation in class activities is also required, and will be measured by examining submitted artifacts created during class time.

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.

WeekDayDateTopicAssignment/Assessment
1Monday1/26Snow Day!Read the Syllabus
Start reading Chapter 1
Wednesday1/28Snow Day!
Friday1/30First Day of Actual Class
How Compilers Work
Java 25 Language Specification
Chapter 2 through the end of 2.1
2Monday2/2Collect Syllabus Questions
Collect Worksheet 1
Grammars and Parsing
Dijkstra – Go To Statement Considered Harmful
Start looking at C useful resources (figure out what is available to you where!)
Wednesday2/4Collect Worksheet 2
Answer Syllabus Questions
Go over Worksheet 1 Answers
C BNF
Memory Management
Continue reading C useful resources
Friday2/6Go over Worksheet 2 Answers…
Memory Management, contd.
Project 1 – String Pool due (demoed) 2/20. Microproject due on Brightspace (no demo needed) 2/11
3Monday2/9Finish Worksheet 3 + Submit
Memory Management, contd.
Thinking about strings, arrays, and pointers
Wednesday2/11Memory Safety
Buffer Overflow Attacks
No Office Hours Today
Friday2/13Progress Report 1
Office Hours 11:30-12:30 Today
4Monday2/16Work DayPLP chapter 11 through 11.3 on Functional Programming
Wednesday2/18Functional Programming Introduction: Style and Languages
Office Hours 12-1 Today
Begin looking at Clojure for the Brave and True
Friday2/20More Functional Programming
Extended Office Hours: 11-1 (maybe longer)
5Monday2/23Lisps: Homoiconic LanguagesProject 2 – Symbolic Differentiator due 3/9, Microproject due on Brightspace 2/27
Wednesday2/25Monty Hall Problem Simulator in Clojure
(local bindings with let, immutability, lazy evaluation)
Friday2/27Functional PL Theory
Office Hours 12-1 Today
6Monday3/2Progress Report 2
Office Hours 12-1 Today
Wednesday3/4Lambda CalculusPLP Chapter 7 through 7.3 on Type Systems
Friday3/6Introduction to Types
XKCD: Types
C Unions
Java Conversions and Promotions
Midterm Study Guide
7Monday3/9
Wednesday3/11
Friday3/13Midterm Exam
8Monday3/16Spring Break
Wednesday3/18Spring Break
Friday3/20Spring Break
9Monday3/23
Wednesday3/25
Friday3/27
10Monday3/30
Wednesday4/1
Friday4/3
11Monday4/6
Wednesday4/8
Friday4/10
12Monday4/13
Wednesday4/15
Friday4/17
13Monday4/20
Wednesday4/22
Friday4/24
14Monday4/27
Wednesday4/29
Friday5/1
15Monday5/4
Wednesday5/6
Friday5/8
Finals WeekWednesdayFinal Exam

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 or generated using AI models. If you have any problems doing the assignments, consult the instructor. The computer science department has put together this page to help make clear what we consider cheating and how you can avoid it.

All parties involved in minor academic integrity violations will receive a score of zero for that exam/assignment, and all violations will be reported. Minor violations are those which could feasibly happen accidentally or due to a little carelessness. Major violations will result in failing the course. Repeat violations, including across semesters, will result in failing the course.

SUNY Oswego Basic Needs Syllabus Statement:

SUNY Oswego is dedicated to recognizing the basic needs of every individual on campus by connecting them to resources and services that assist them in meeting their basic needs. If you are in need of food, clothing, academic supplies, emergency housing, addiction services or are unsure of what resources are available to meet your basic needs, please complete the following form to connect to the Office of the Dean of Students: Basic Needs Self-Disclosure Form

For information on mental health services visit the Counseling Services website and for information on health services visit the Health Services website.

If you have any questions or would like to schedule a meeting with one of the Assistant Dean of Students, email deanofstudents@oswego.edu or call 315-312-5483. Visit the Office of the Dean of Students website https://ww1.oswego.edu/dean-students/ for more information.

For other inquiries, visit the Oz Concern Navigator at https://oswego.concerncenter.com.

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-ix/ or contact the Title IX Coordinator, 405 Culkin Hall, 315-312-5604, titleix@oswego.edu. For more information about the Clery Act and campus reporting, go to the University Police annual report: https://www.oswego.edu/police/annual-report.