CSE 216 Programming Abstractions
Spring 2024
Course Description (Syllabus)
Intermediate-level programming concepts and paradigms, including functional programming,
object-orientation, basics of type systems, memory management, program and data abstractions,
parameter passing, modularity, version control, and parallel programming.
Includes weekly recitations, which provide students with experience in the practice of
programming in a variety of high-level languages.
Instructor
YoungMin Kwon (youngmin.kwon at sunykorea dot ac dot kr)
Office: B420
Office hours: TuW 3:30pm ~ 4:30pm
TA
Geonwoo Kim (geonwoo.kim.1 at stonybrook dot edu)
TA hours: Th 6:00pm ~ 10:00pm, F 1:00pm ~ 5:00pm
Class hours: Lecture: TuTh 10:30am ~ 11:50am, Recitation: W 2:00pm ~ 2:55pm
Class room: TuTh: B203, W: B203
Text books and References
- "Programming Language Pragmatic," by Michael L. Scott, 4th Edition,
Morgan Kaufmann, 2016, ISBN: 978-0-12-410419-9.
- "Structure and Interpretation of Computer Programs," by Harold Abelson, Gerald Jay Sussman, and Julie Sussman, 2nd Edition,
The MIT Press, 1996, ISBN: 978-0262510875.
- OCaml learning material from https://ocaml.org/learn
Useful links
Grading
- Midterm exam 1: 20%
- Midterm exam 2: 20%
- Final exam: 25%
- Programming assignments: 30%
- Recitation exercises: 5%
- Attendance: missing more than 20% of the class will fail the course
Major Topics Covered in the Course
- Programming language paradigms
- Functional problem-solving using a high-level functional language
- Object-oriented design and programming
- Cross-cutting programming language concepts
- Version control
Course Outcomes
- An understanding of programming language paradigms and tradeoffs.
- An understanding of functional techniques to identify, formulate and solve problems.
- An ability to apply techniques of object oriented programming in the context of software development.
Lecture Slides
- Lecture 00: Overview,
Install Linux on AWS
- Lecture 01: Programming language paradigms
- Lecture 02: Procedural abstractions,
(assignment 1: TowerOfHanoi.ml, TowerOfHanoi.mp4),
(assignment 2: newton.zip)
- Lecture 03: Data abstractions,
picture.ml,
(assignment 3: robot.zip, robot_video_clip.mp4)
- Lecture 04: Algebraic data type,
tiny_eval.zip
- Lecture 05: Tail recursion and CPS,
(assignment 4: tiny_eval_cps.zip)
- Lecture 06: Modular Abstractions,
(assignment 5: robot_module.zip)
- Lecture 07: Objects, Streams and Lazy Eval,
(assignment 6: adder.ml)
- Lecture 08: Lambda calculus,
(assignment 7: church.ml)
- Lecture 09: Type systems,
Recitation
Academic Integrity
Students should pursue their academic goals in an honest way that does not put you at
an unfair advantage over other students.
You are responsible for all work you submitted and representing other's work as yours is always wrong.
Faculty is required to report any suspected instance of academic dishonesty to the school.
Regarding your homework, you are encouraged to discuss it with others, but you should write
your own code.
For more information please refer to
Academic integrity
Students with Disabilities
If you have a physical, psychological, medical or learning disability that may impact
your course work, please let the instructor know.
Reasonable accommodation will be provided if necessary and appropriate.
All information and documentation are confidential.
Critical Incident Management
The University expects students to respect the rights, privileges, and property of other people.
Faculty are required to report to the Office of Judicial Affairs any disruptive behavior that
interrupts their ability to teach, compromises the safety of the learning environment,
or inhibits students' ability to learn.