CIS 1200: Programming Languages and Techniques

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

Asynchronous course with synchronous components

The main course material will be available via pre-recorded videos, lecture slides, and lecture notes that will be released each week. Please see Piazza for more information about how to access this material.

In addition, you are strongly encouraged to join a synchronous discussion about the course material with Professor Fouh, Mondays through Thursdays 10-12PM ET. See Piazza for information on how to join this session.

You must also register for a synchronous recitation section, where you will meet in small groups with a TA. (Please email cis1200@seas.upenn.edu if you are unable to join your section synchronously.)

Computer Science through Program Design

CIS 1200 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

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.