Assignment 2 available. Exam 2 on **Wednesday, April 1**.
Monday and Wednesday, 11:00 am - 12:20 pm @ Melville Library W4550
OFFICE HOURS (SPRING 2026)
206 New Computer Science
Monday 1:30 pm - 3:30 pm | Wednesday 5:00 pm - 6:00 pm
Friday May 15, 11:15 am (Official Schedule Calendar)
Note: The final exam schedule is decided by the Office of the Registrar. This cannot be changed.
Email: ytugrul@cs.stonybrook.edu
Office Hours:
Tuesday, 3:30 pm to 5:00 pm
Thursday, 3:30 pm to 5:00 pm
All TA Office Hours are held in (Old) Computer Science, Room 2126
Topics in this list will appear as crossed-out, as the semester progresses and we cover the topics in class.
Programming Abstractions for Data Scientists: overview and philosophy, and case studies
The Python You Think You Know: dynamic typing, reference semantics, common bugs and design choices, type hints
Introduction to OCaml (the "Laboratory" of programming): let bindings, expressions vs statements, REPL-driven development, simple data types
OCaml Types and Pattern Matching Basics: records, algebraic data types, type inference
Assignment 1 released
Pattern Matching Deep Dive: exhaustiveness, nested patterns, guards; connection to structural pattern matching in Python
Lists and Recursion in OCaml: the parametrized list, recursive functions (map, reduce, and filter), tail recursion and stack overflows
Python Type Hints and mypy: type hints in Python code; generics, optional, union; mypy usage; limitations of Python's type system
Discussion of Assignment 1
Assignment 1 due
EXAM I
Assignment 2 released
Buiding Typed Pipelines in Python: dataclass and Pydantic; type-safe pipeline composition
First-class Functions: functions as values, higher-order functions, anonymous functions
Closures and Lexical Scope: closures in OCaml and Python; partial application; parametrized transformations
Lambda Calculus Essentials: syntax and beta-reduction, connection to functional programming
From Lambda Calculus to Python: evaluation strategies, currying in practice, rewriting loops with higher-order functions
Discussion of Assignment 2
Assignment 2 due
EXAM II
Immutability: mutable vs immutable structures; parallel computing semantics
Functional Python: higher-order functions in practice; functional tools; operations as transformations; performance considerations
Practical Functional Data Wrangling: method chaining in pandas; error handling in pipelines
Introduction to DSLs: pandas syntax; internal vs external DSLs
Assignment 3 released
Parsing Basics: grammars and abstract syntax trees (ASTs); a simple recursive descent parser in OCaml; Python's ast module
Interpreters and Evaluators: from AST to execution; writing a simple interpreter; environments and binding
DSL Design: deconstructing pandas syntax; magic methods and operator overloading; domain-aligned abstractions; deferred or symbolic evaluation
Discussion of Assignment 3
Assignment 3 due
EXAM III
Evaluation Strategies: eager vs lazy evaluation; parameter passing; OCaml's Lazy module; lazy evaluation for big data
Assignment 4 released
Generators and Iterators in Python: the Iterator pattern; memory-efficient code; vectorization vs loops
(Part 1) Lazy Evaluation in Data Systems: Spark's lazy evaluation; pandas and dask + (Part 2) Discussion of Assignment 4
Assignment 4 due
FINAL EXAM