CIS 120: Programming Languages and Techniques I
Spring 2015

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.

CIS 120 Spring 2015 Waitlist

Registration for CIS 120 in Spring 2015 is currently closed. If you tried to pre-register for the class, you are already on the waitlist. Otherwise, if you would like to take CIS 120, please note yourself down on the CIS 120 Spring 2015 Waitlist. Preference will be given to those who have CIS 120 as a major requirement.

If you are already registered for the lecture section of CIS 120 but need to change or add your recitation section, please use this recitation switch form. Note: If you drop your current recitation section, you will not be able to register for the new section. The only way to switch sections is to get a permit by adding your name to this form.


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 Eclipse development environment for implementing their projects.

OCaml Setup Instructions

Instructions for installing OCaml and OcaIDE on your computer can be found here.

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, preferrably 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.