Upcoming deadlines
Information
Course Number | CIS 352 (Spring 2020) at Syracuse |
Instructor | Kristopher Micinski |
(kkmicins@syr.edu) | |
Teaching Assistants | Jack Vining (jcvining@syr.edu) |
Yihao Sun (ysun67@syr.edu) | |
Times | Tu/Th 11:00-12:20 Lecture Monday Labs |
Professor Office Hours | Th 9-11AM or by appt. |
TA Office Hours (Mac Lab in LSC) | Tu 9-11AM, 1-3PM. Th 2-4PM |
Introduction
The purpose of this course is to help you understand how to leverage the semantics programming languages to write the clearest and most obviously-correct programs you can. We will begin by introducing you to a new language, Racket. Racket is an untyped functional language that harmoniously mixes code and data to allow succinct and expressive programs. We will use Racket as a means to teach good functional programming style and reflect upon how our decisions impact the quality of our code. While doing this we will highlight several foundational concepts whose implications go far beyond Racket, such as operational semantics and the Lambda calculus.
After bringing students to fluency in functional programming, we will use Racket to build several different languages. The languages we build will be relatively small (compared to, say, C), but will be nonetheless expressive, allowing us to write quite impressive programs in languages we built ourselves. We will explore different ways of defining programming language semantics while remarking upon the implications of these choices in our day-to-day programming (even in languages beyond Racket, such as JavaScript, C++, Rust, etc…).
Course Structure
Please read the Syllabus for course information.