CIS 120: Programming Languages and Techniques I
Fall 2019

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

Register for make-up Final exam

If you have conflict with the final exam, you must register to take the make-up exam by Friday, December 13th. We will contact students after this date about rescheduling the exam.

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.

OCaml Instructions

We encourage the use of Codio for the OCaml parts of this course. See the instructions on that web page for how to get started.

If you would prefer not to use Codio, you can find instructions for installing OCaml and OcaIDE in Eclipse.