Programming & Problem Solving (Fall 2013)


This course develops students' problem solving skills using techniques that they have learned during their CS training. Over the course of the semester, students work on three group projects in which they use programming techniques to solve open-ended problems, e.g. optimization, simulation, etc. There are no "correct" answers to these problems; rather, the focus is on the four steps of the problem solving process:

  • Algorithmic thinking: creating an approach
  • Programming: implementing a solution
  • Analysis: understanding the behavior of the implementation
  • Communication: through discussion, presentations, and writing

In each project cycle, the instructor first presents the problem to be solved. Subsequent class meetings will consist of discussions of the students' insights into the problem and the work they have done in their group. There will be a series of team "deliverables" due over the course of the project cycle, and each group will demonstrate their progress to the rest of the class.

At the end of the cycle, a competition will be held to determine the "best" solution (by an agreed-upon definition of "best"). The results of this competition will be announced in time for the students to incorporate the results into the final report for the project, which also includes details of the team's solution and analysis of the results. In the last meeting of each project cycle, teams present their report and then new teams are created, the idea being that students never work with the same other student more than once.

It is assumed that students who take this class are proficient in Java (at least two years of experience). Also, because much of the course involves discussion (either with your teammates or with the rest of the class), students are expected to attend and participate in all class meetings; a student who misses more than two class meetings may be asked to drop the course.

This course is based on COMS W4444 at Columbia University, where it has been extremely popular with students.

Note: This class can be used as a seminar-level course by PhD students, and is appropriate for upper-level undergraduates and graduate students.

Class Meeting Times

Tuesdays and Thursdays from 3-4:30pm. Class meetings will be held in Levine 307.

Back to Top


There are no textbooks for this course. A variety of supplemental material can be found under the Resources section.

Back to Top


There are no homeworks and no exams in this course. Students' grades will be determined based on:

  • The quality of the groups' solutions to each problem. This will be assessed by the instruction staff, according to the insightfulness of the solution presented in the final project report, the results of the competition, the analysis of the solution and results, and presentation to the class.
  • Contribution to the groups' solutions. To ensure that no student is simply a "hanger-on", each student will assess his or her teammates at the end of each project. Students who make no significant contributions to the team may be asked to drop the class.
  • Class participation. Every student is expected to participate in every class discussion, making attendance essentially mandatory.
This class is fairly intensive, given that there are deliverables due at the start of each class meeting, and teams only have three weeks in which to develop a solution and write their final report. However, students' enjoyment and fulfillment will come in proportion to the amount of energy they put into the course.

Back to Top

Academic Integrity

All work submitted for this class is expected to be your own, unless otherwise noted in the assignment instructions. If you are caught submitting work that is completely copied from some other source, or that has been prepared by somebody other than you, you will face severe discipline by the university.

You can further read Penn's Code of Academic Integrity page on this subject matter, as well as the SEAS Graduate Student guidelines on the code of ethics.

Back to Top

Assignment turn-in procedure

Your group will turn-in all assignments using Blackboard. Follow the steps below.

  1. Log into Blackboard
  2. Open your course (CIS 700).
  3. In the main menu on the left-hand side, click "Assignments".
  4. Click on the assignment for which you want to submit your homework.
  5. In Section #2, "Assignment Materials", leave the "Submission" (the text area at the top) blank, as your submission will consist of files that you will upload.
  6. Below the textbox, next to the label "Attach File", click the "Browse My Computer" button. After you choose the file, you should see it listed next to the label "Attached files" (i.e., it should be uploaded automatically when you select it). Unless otherwise noted, your submission should consist of a single .zip or .tar file.
  7. After uploading all files, click the "Submit" button.

You may submit multiple times, but only the last submission will be graded.

Late submissions will not be accepted!

Back to Top

Previous Course Offerings

This course has been taught three times at Penn so far:

Back to Top