Computer Science @ PENN

caml | java 1.5 api | slashdot | webmail | wikipedia | directories | portal | van pelt library | engineering library
computer graphics & game dev (SIGGRAPH) | dining philosophers (DP) | science & tech wing (STWING) | women in cs (WICS)
CETS Answers |

CIS 120e (Fall 2010)

Moore 212 MWF 11:00 - noon



CIS120e is an experimental revamping of the CIS120 course material. The goal is to introduce students to computer science by emphasizing the design aspects of programming. Students taking this track of CIS120 will learn how to design programs, including:

  • 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.

CIS120e track vs. CIS120

How do the two versions compare?

  • Both tracks cover the same fundamental concepts but with some differences in emphasis and tools. The old track places greater emphasis on the details of the Java language and touches on programming in Python. The new track also teaches Java, but with a greater emphasis on the process of program design, and uses a functional language (OCaml) during the first several weeks to explore a range of design problems in a simplified setting. The new track does not include Python.
  • To give you an idea of how the course content breaks down by programming language: CIS120 uses Java for approximately 24 lectures and then moves to Python for (about) 11 lectures. Our current plan for CIS120e uses OCaml for approximately 20 lectures and then moves to Java for roughly 15 lectures in the last part of the course (though this balance may be adjusted during the semester).
  • Both tracks will prepare students for the rest of the CIS curriculum, and no distinction will be made on students' transcripts. Both tracks are appropriate for all majors.
  • Both tracks have the same prerequisites (see below). The difficulty level between the two courses will be comparable. Grading standards will be similar.
  • We believe that CIS120e (combined with the rest of the CIS curriculum) will ultimately produce stronger Java programmers than the regular CIS120 track, by starting students with a more solid foundation. In the short term, however, CIS120e students will be exposed to fewer of Java's more advanced features.

Who can take CIS120e?

  • Students enrolled in CIS120 Lab 206 are automatically enrolled in CIS120e and should go to Moore 212 for lecture, unless they decide to opt out of the class. Students choosing to opt out should simply register for a different section of CIS120 lab.
  • CIS120e is open to any student who satisfies the standard CIS120 prerequisites. Students who would like to switch to the new track must register for CIS120 Lab Section 206, subject to space constraints.
  • CIS120e 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.
  • Since this is the first offering, students taking CIS120e should be willing to tolerate a few occasional rough spots.