Programming & Problem Solving

CIS 5590 - Summer 2024

Painting of catehdral and bazaar

Overview

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 in groups to apply programming techniques to solve open-ended problems, e.g. games, 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

Students who take this course are expected to be proficient in Java and should need little to no help with Java syntax. Students are assumed to be familiar with the Java Collections Framework data structures as well as defining their own classes using interfaces. Prior coursework in algorithms, artificial intelligence, and machine learning is helpful but not required.

Course Structure

The Summer 2024 offering of this course will likely consist of four project cycles: one short cycle (less than one week) and three longer ones (approx. two weeks each). Students will nominally work in groups of three during each cycle.

In each project cycle, the instructor first presents the problem to be solved and leads a discussion about the expectations for the deliverables. Subsequent class meetings will consist of discussions of the students' insights into the problem and the work they have done in their group; time will also be allocated for students to work together on their solution and get help from members of the Instruction Staff. Groups will be expected to continue working on their solution and show progress at the start of each class meeting.

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.

This course is based on COMS 4444 at Columbia University taught by Ken Ross, which is one of the highest rated CS courses at that institution. Further information about the goals and structure of the course is described in a 2016 Computer Science Education research paper; you can find out more at this page.

Course Policies

Attendance

Class meetings will be held on Mondays, Wednesdays, and Fridays from 12-2:30pm EDT on Zoom starting Monday, July 8; the link will be provided to registered students. There is no class meeting on Friday, July 5.

Due to the interactive nature of the course and the focus on discussion and collaboration, all students are expected to attend and participate in all class meetings, even though they will be on Zoom.

Although an occassional absence from class due to unanticipated circumstances will be permitted, this course is not suitable for students who cannot regularly attend class at the times listed above, and students who intend to participate asynchronously are advised to seek other courses.

Programming Language

All work in this class must be done in Java. Although the focus of the course is more on the approach and solution to problems than on the implementation, all starter code, test frameworks, and simulation environments will be in Java.

Students with little to no prior Java experience may find it difficult to succeed in this course, and should not expect much support from the Instruction Staff for basic Java programming and debugging issues.

In order to standardize the tools used in the course, all students are expected to work with the IntelliJ IDEA development environment for Java. Students who choose to use other IDEs should not expect to receive support from the Instruction Staff.

Academic Integrity

All students in this course are expected to abide by the SEAS Graduate Student Code of Ethics and the University's Code of Academic Integrity.

Although most work in this course is done in groups, submitting someone else's work (e.g. something found online, something given to you by a student who took the class in the past, etc.) and claiming it as your own, even with further modification, is considered plagiarism and will be treated as academic dishonesty.

The use of generative AI tools such as ChatGPT and GitHub Copilot may be permitted under certain circumstances on a case by case basis. This will be discussed during the course, but students may not use these tools without prior permission from the Instructor.

Assessment

There are no individual 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 and thoroughness of the solution presented in the final project cycle 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 all students are contributing to their group's solution, each student will assess their teammates at the end of each project cycle.
  • Class participation. Every student is expected to participate in every class discussion, making attendance essentially mandatory. Students who miss more than two class meetings, regardless of reason, may be asked to drop the class.

This class is fairly intensive, given that there are deliverables due at the start of each class meeting, and groups typically have less than two weeks in which to develop a solution and write their final report. Historically, students' enjoyment and fulfillment will come in proportion to the amount of energy they put into the course, and course grades typically reflect students' effort and engagement more than prior programming experience.

For more information, please contact Prof. Chris Murphy: cdmurphy@cis.upenn.edu

Top