CS 4960
Programming Challenges
School of Computing
University of Utah

Sessions: Tuesdays  12:20 PM - 1:40 PM
Thursdays  12:20 PM - 1:40 PM
CADE lab (WEB L 226)
  Class runs from August 31 to November 9.
Email: teach-cs4960@list.eng.utah.edu  
Instructor: Peter Jensen  
Office hours: Tuesday 10:30 AM ‑ 11:30 AM
Wednesday open-door or by appointment
Thursday, 10:30 AM ‑ 11:30 AM
(Other times by appointment only.)
Catmull Gallery / CADE Lab
MEB 3148
Catmull Gallery / CADE Lab

Official Syllabus

The official syllabus is available here.

Overview

Many undergraduate students study programming languages, learn algorithms, and develop their ability to write code for various platforms.  What distinguishes the best students is their problem solving ability.  Unfortunately, most students do not see the need to practice problem solving.  The first time they are under pressure to program the solution to a tough problem, they'll look in a book or do a web search to try to find an answer.  The code they write may run too slowly or fail under certain conditions.  Alternatively, the best programmers will have a 'bag of tricks' at their disposal that can be applied to many problems.  For the remaining problems, they will be able to design an algorithm of their own.  Additionally, the best programmers adopt practices and techniques to minimize programming errors.

This class is primarily a laboratory for practicing your advanced problem solving and programming skills.  It is also a preparation class for the programming contest held each fall.  An emphasis is placed on rapid development of accurate software solutions for problems found in real-world programming, interview exams, and programming competitions.  Any student who wants to sharpen their programming skills in a mildly competitive atmosphere is welcome to take the class.

Each week we will solve, program, and study several programming challenges during class.  For each problem, students will be grouped into pairs and each pair will solve and program their solution to the problems.  As a class we will then break down the problem-solving strategies used to attack the problem, and solutions will then be revised until they work (hopefully).  The goal is for students to develop a repertoire of problem-solving strategies that they can rapidly apply to any programming problems they may face.

The class will be informal; I will strive to maintain a light atmosphere.  There will be no weekly deadlines and no exam. Attendance and participation is required, though.  Students will be expected to solve each problem, program a solution, and talk about their strategies and techniques with the rest of the class.  In addition, we will talk about programming contest strategies and we may design programming competition problems of our own.

Grading will be twofold: To pass the class, students will need to successfully participate in three programming contests throughout the semester.  Each contest is short (95 minutes), and there are eight during the semester.  To earn a letter grade for the class, students will be marked on attendance and participation only.  Students that complete the required contests and that regularly attend class will earn an A.

There will be a regional programming contest on the last Saturday in October.  (The exact date is subject to change.) Students may earn extra credit by either participating in the contest or by helping out with the administrative details during this competition.  This extra credit will allow you to miss one full class session, or two half class sessions without penalty.

Registering

Instructor permission is required to enroll in this class.  In other words, please come talk to me (Peter Jensen) if you'd like to attend. I simply wish to filter out students who cannot program.

Getting Started

To begin the semester, students should create an account at this programming competition website:

http://www.topcoder.com/tc

Students should sign up for email notification from TopCoder about their algorithm single round matches (SRMs).  These are the competitions you must do to earn credit.  You must have a positive score at the end of the competition to earn credit for it. Please complete the required competitions as soon as possible.

Our first class session is Tuesday, August 31 in the CADE lab (WEB L 226) at 12:20 PM.  Please come ready to program!

Page updated .