Competitive/Collaborative Programming Class

ICPC Computer Programming Contest Prep

Problem Solving in Computer Science

Spring 2017 -- CSC 2700 Section 01 (Lockett Hall 111 [horses.riches.describe], 6:30 PM - 8:20 PM)


Return to Class Main Page


Each year the ACM conducts an International Collegiate Programming Contest for undergraduate students. Teams are chosen for this contest via Regional Programming Contests (LSU hosts the ACM South Central Regional Programming Contest that covers Louisiana, Oklahoma and Texas). The top team(s) from each region are invited to compete in the International contest.

Many of the schools in our region compete. The LSU Computer Science Department fields at least one team each year for our regional contest to represent LSU and Louisiana. Since LSU is the flagship university of the state, LSU should send a well-prepared, competitive team.

Team preparation varies from school to school. Many schools use a formal class to prepare participants for Programming Contests. This has the advantage of providing a structured, regular training and practice environment that the students are motivated to take part in.

This course is a one hour class to create that environment at LSU. The goal this semester will be to instill fundamentals in students that will better prepare them for competition.

Next fall, a follow-up course should be offered to hone the skills of the students that decide to actually compete in the next ACM Regional Programming Contest.

Return to Top of Page

Purpose of Course

The obvious purpose of this course is to help students who are interested in competing in the ACM Regional Programming Contest. But the class will do much more than that.

The primary focus of this class is improving individual and group problem solving skills. As the students progress through this class, they will utilize the skills that have learned in other classes to solve problems. This process will result in improvements in the following areas:

The real benefit of this class is that students at various levels will work together to understand and solve problems. They will learn to read problems, analyze them, discuss them, recognize which data structures and algorithms make sense for various problems, improve their coding skills, and learn better testing techniques. They will collectively hone their computer science skills.

The benefits are numerous. The students become better problem solvers, better software designers, better programmers, better testers and better debuggers. They learn to work as teams and to manage time and resources. Because they have improved and because they see more benefits of their previous classes, they become better students in future classes. This leads to them representing LSU better in their future jobs.

Return to Top of Page

Course Implementation

The course will generate one hour of credit. It will be treated as a lab class so that two contact hours a week would occur. Grades would be determined by class participation, successful problem submission, and completing a final exam.

Each class meeting will be made up of combinations of lecture, problem analysis, data structure discussion, algorithm discussion, solution design, solution implementation and testing. The problems discussed each time will provide a pool that the students can write and submit to an existing online judge system for evaluation. Since a class is about 14-16 weeks long, students would be expected to solve at least eight problems (from the ones presented in class) during the semester.

The course will rely on online resources and text books. Obviously, the texts the students already have will be valuable to them. Here is a brief list of some the resources they will use and/or have access to:

Return to Top of Page

Topics/Concepts to be Covered

This course will be organized so that each of the different areas that the students need to gain expertise in are covered. Most activities will concentrate on a small number of areas at a time. Below is a list of many concepts that the student will be exposed to during this course:

Return to Top of Page

Grading Policy

The best way to think of this class is as a lab class. Most of what you learn will come from the class discussions, attempting to solve problems, and working with others. From that perspective, the grading is oriented to encourage class participation. Basically, each interaction you miss, results in a letter grade loss (or the need to do outside work to compensate for the loss).

This class will meet the following meetings:

Anticipated Class Meetings
January 17 24 31
February 7 14 21 28
March 7 14 21 28
April 4 11 18 25

Your grade will be based on the following:

Each class that you attend and participate in will be worth 5 points. By coming to class and participating in the activities, you can collect 52 points (13 classes * 4 = 52).

For each pair of classes, you will have to turn in one (1) programming assignment. The program will be taken from 1 of the programs that I hand out in class (unless otherwise prohibited). You must implement a solution to one of the problems, submit it to the online judge and have it judged correct before turning it in. If turned in on time, each program is worth 5 points (7 times 5 = 35 points). Programs turned in late earn 1 point each. Note: You must turn in all seven (7) programs to pass!

If you have participated in each class and turned in each program, you are 5 points from an A. Additional points can be earned via the following activities (permission in advance required):

You will have more than adequate opportunities to make an A+ in this class. You should take advantage and knock out extra points early on to free you up at end of semester.

Knock out the minimum number of programs early -- do not let them get in the way of other classes.

If you miss a class or have other issues, get in touch with me. We can work it out.

The final will be the last scheduled class meeting (because this is a lab class, the final happens BEFORE regular finals start). You MUST attend and take the final.

Return to Top of Page