CIS 120: Programming Languages and Techniques I

Fall 2014

NOTE ROOM CHANGE:Leidy Labs 10, MWF 11-noon

The goal of CIS 120 is to introduce students to computer science by emphasizing the design aspects of programming. Topics include:

  • test-driven development
  • data types and data representation
  • abstraction, interfaces, and modularity
  • programming patterns (recursion, iteration, events, call-backs, collections, map-reduce, GUIs, ...)
  • functional programming
  • how and when to use mutable state
  • inheritance and object-oriented programming.

OCaml Setup Instructions

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

CIS 120 Waitlist

Registration for CIS 120 in Fall 2014 is currently closed. If you are currently unable to register for CIS 120 but are interested in taking it, please note yourself down on the CIS 120 Waitlist . Preference will be given to those who have CIS 120 as a major requirement.

Change of Recitation Sections

Please fill out this form if you would like to switch recitation sections. Note: If you drop your current recitation section without filling in this form, you may not be able to register for the new section.


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.

The Caml Language Java Eclipse

Who can take CIS120?

CIS120 students are not expected to have any prior experience with OCaml (or even Java). We assume some previous programming experience at the level of a high school computer science class. If you got at least 4 in the AP Computer Science A or AB exam, you will do great. Basic experience with any programming language (for instance C, C++, Java, VB, or Scheme) will be sufficient. If you have never programmed before, you should take CIS 110 first.