CIS 120: Programming Languages and Techniques

This information is for Spring 2022. The website from Fall 2021 is archived here.

Computer Science through Program Design

CIS 120 introduces students to computer science by emphasizing the design aspects of programming.

Topics include:

  • Data types and data representation
  • Abstraction, interfaces, and modularity
  • Test-driven development
  • Programming patterns (recursion, iteration, events, call-backs, collections, map-reduce, GUIs, …)
  • Functional programming
  • How and when to use mutable state
  • Object-oriented programming

Important Course Information

  • Syllabus - Course policies and procedures
  • FAQs - Commonly asked questions
  • Wellbeing - Where to get help
  • Resources - Information the about OCaml and Java programming languages


The first two weeks of Spring 2022 CIS 120 will be held virtually. Please access the Zoom links for the course via Canvas (registration required).

All course announcements will be posted to Piazza.

Who can take CIS 120?

CIS 120 students are not expected to have any prior experience with OCaml. We assume previous Java programming experience at the level of a high school computer science class or CIS 110. If you got at least 4 in the AP Computer Science A or AB exam, you will do great. If you have never programmed before, you should take CIS 110.