1. Meeting Times
  2. Grading
  3. Prerequisites
  4. Number of credits
  5. Course Description
  6. Course Objectives
  7. Learning Outcomes
  8. Resources
  9. Textbooks
  10. Similar Courses at other universities
  11. Me teaching this (or any) course
  12. Poster

Meeting Times

The class meets all 5 weekdays, Monday through Friday, for 3 hours each day from 9:30 AM - 12:30 PM in Riley Hall 106.

The course is comprised of 15 meetings from May 8th - May 29th, 2024.

Each class would contain at least one computer programming problem. Students are expected to turn in at least 80% of the in-class problems within one hour maximum of the end of the class duration.

Grading

The breakdown of the course grade is as follows:

  • 30 % - Attendance (2 per meeting)
  • 30 % - Class Participation + in-class problem solving (2 per meeting)
  • 20 % - Assignments: out-of-class problems
  • 10 % - Mock interviews (May 27th - May 28th)
  • 10 % - Programming Competition (May 29th)

To get a passing grade, students muse be present for at least 13 of the 15 classes scheduled for MayX.

Grade Scale:

  • A: 90-100
  • B: 80-89
  • C: 70-79
  • D: 60-69
  • F: 0-59

+/- grades will be assigned at the instructor’s discretion.

Prerequisites

CSC-121: Introduction to Computer Programming

Number of credits

2 credits

Course Description

This course is designed to prepare students for Programming Competitions and Coding Interviews. Every meeting will include a problem solving session where students will be expected to solve problems in a limited time frame. The problems will be selected from previous national and regional competitions and commonly given problems in technical interviews. The instructor will provide guidance and feedback to the teams after the problem solving sessions. The class is going to be modelled as a course-length tournament and/or game show. Students will also be expected to complete assignments for practice and to participate in external programming contests and mock coding interviews.

Course Objectives

  1. Broadly enhance student abilities in programming under time constraints.
  2. Prepare students to compete in national and regional programming competitions
  3. Help students prepare for technical interviews in their job search

Learning Outcomes

  1. Develop and sharpen problem solving skills
  2. Solving a wide breadth of problems using a variety of algorithmic strategies
  3. Learning to effectively communicate understanding and solution to a problem
  4. Demonstrating the ability to improvise and think quickly on their feet
  5. The ability to work effectively in a team and collaborate with others towards solving a problem

Resources

Textbooks

List possible text(s) by author and title:

  • Competitive Programmer’s Handbook by Antti Laaksonen

  • Guide to Competitive Programming: Learning and Improving Algorithms Through Contests (Undergraduate Topics in Computer Science) 2nd ed. 2020 Edition by Antti Laaksonen

  • Cracking the Coding Interview: 189 Programming Questions and Solutions 6th Edition by Gayle Laakmann McDowell

  • Programming Challenges: The Programming Contest Training Manual (Texts in Computer Science) Paperback – January 1, 2003 by Steven S. Skiena, Miguel A. Revilla

  • Competitive Programming in Python 1st Edition by Christoph DĂĽrr

  • Competitive Programming 4 - Book 2 Paperback – July 18, 2020 by Steven Halim

Leet code Premium membership for all students (35 USD a month) for duration of the semester

Similar Courses at other universities

Me teaching this (or any) course

I am making this up as I go along.

I have never taught this course before. I have never taken this course before. For what it’s worth, my PhD advisor Dr. Steven Skiena led the Stony Brook team for many years and even wrote a textbook on the subject. The Stony Brook team frequently qualifies for the North American Championship. I have seen Dr. Skiena’s process a little bit and I am going to try to emulate that here at Furman.

via GIPHY

Everything is tentative and subject to change

This is my first teaching this course. Any and all feedback is welcome!

I have created an anonymous feedback poll on Moodle. Please use this to anonymously share any feedback.

Share any changes you want me to make in the course, at any point in the semester. You can submit multiple times over the span of the semester.

Think of it as a Complaints Box 🗳️ for the course.

Poster


Copyright © 2024 Syed Fahad Sultan. Distributed by an MIT license.