CIS 120: Programming Languages and Techniques I
Spring 2020

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
  • and object-oriented programming.

Course Logistics

Who can take CIS120?

CIS120 students are not expected to have any prior experience with OCaml. We assume some previous programming experience at the level of a high school computer science class, preferably in Java. 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 first.


CIS 120 teaches programming concepts in two different languages: OCaml and Java, spending approximately equal time on how to design programs in each language. Students are encouraged to use the Codio or Eclipse development environments for implementing their projects.