Spring16
Roster Form: https://docs.google.com/forms/d/1xQN05Saj8lga8CtxxhtcO2_zeFwowlhX8OrJ_Ifwei0/viewform
test server intro: http://speedyguy17.info/spring2016i/ test server advanced: http://speedyguy17.info/spring2016a
Course Objectives
- Get better at solving programming problems than you were at the beginning of the semester by learning techniques, both algorithmic and implementation, that are necessary for solving such problems
Auxiliary Benefits
- A strong grasp on fundamental algorithms that arise in other courses and may be useful in your career
- A better command of whichever language you are solving problems in
- The ability to solve small programming puzzles, many of which arise in interview type situations
Class Structure
- Class will meet each Monday
- The class will be split into 2 self selecting sections
- Each section may talk about different problems and have different assignments
- Students may move between sections freely
- Students participating in both sections may complete parts of requirements for each section. Please talk to me if you are unsure!
Focus for the Semester: Intro Section
The Intro section is aimed at students who have not taken 309s before, or who have, but are still looking to become comfortable with the basics. The goal is to become comfortable solving some of the easier problems which come up as well as starting to become versed in the techniques which will be necessary for solving more difficult problems.
Class Requirements
- Attend Seminar and contribute. Missing class regularly will result in a lower grade. At times during class, everyone will be asked to contribute something to the discussion. Choosing not to contribute to these discussions will be impactful.
- Solve 18 problems over the course of the semester. This comes to just over 1 problem per week.
- Problems should come from the assigned sets. This includes any problems from the sets as well as any problems done for a scrimmage or contest
- At times, individual problems discussed in class may be assigned as required. If these problems are regularly left uncompleted the week they are assigned, final grade will be impacted
- Problems should be solved throughout the semester. If you solve 12 problems the last two days before the end of the semester, it won't be fun for anybody. If you participate in the contests, this should not be a problem.
- Lead the discussion of a problem (selected by you) that you have solved. Add a description of your solution (with code) to this wiki.
- The problem should be approved by Kevin before you choose it, and it need not come from the set of problems assigned from class
- You should sign up for the date you'd like to present on the schedule below.
- Sign up early for your choice of problem and date!
- Participate in 5 contests over the course of the semester.
- Topcoder, Google Code Jam, Codeforces, and Waterloo are pre-approved. Please ask if you'd like another contest to count
- Contests happen generally at least once a week. Do them early, as I do not want people saying at the end of the semester that the times of the remaining contests conflicted with things
- Performance in contests does not affect grades, only participation
Focus for the Semester: Advanced Section
After a successful fall semester, which saw Duke teams solve a great many problems in the ICPC regional competition, the focus is several fold:
- Continue to maintain working knowledge of Fundamental Algorithms which was developed in the past semesters. I expect each student in the class to take individual initiative in identifying the algorithms they are not yet familiar with, attempting to understand them on their own, and finally approaching the class with help. This program will be successful if we maintain continual knowledge of these algorithms at a high level.
- Focus on problem quality over quantity. Everyone who attends this section has demonstrated that they can solve basic problems. The aim is to push students to solve problems that they could not solve before, and might not have thought of approaching. It is these problems that will make the difference between winning at the regional level and not.
- Increase the amount of time spent in actual competition environments. We have spent a lot of time solving problems and scrimmaging, but the more relaxed nature of a scrimmage may not force the same mentality that you get from an actual competition.
Class Requirements
- Attend Seminar and contribute. Missing class regularly will result in a lower grade. At times during class, everyone will be asked to contribute something to the discussion. Choosing not to contribute to these discussions will be impactful.
- Solve 8 problems over the course of the semester. This comes to 2 problems a month.
- Problems should come from the assigned sets.
- The sets will largely be derived from world finals problems, which are both more challenging algorithmically, and generally more difficult to code
- Problems from contests will NOT count towards this 8 UNLESS it is the hardest problem in the set, which I consider equivalent to most world finals problems. This is a change over prior semesters and due to the focus on more challenging problems.
- Problems should be solved throughout the semester. If you solve 8 problems the last two days before the end of the semester, it won't be fun for anybody.
- Problems should come from the assigned sets.
- Teach the solution of a problem to the class.
- This is a slight change of simply presenting a problem, as the goal is to teach everyone, rather than to just talk
- I will review with you your strategy for teaching the class before hand
- This will hopefully help to ensure everyone is engaged and understands
- You will have to think and prepare your teaching strategy before hand
- You should post your solution on the wiki as well
- Participate in 6 contests over the course of the semester.
- Topcoder, Google Code Jam, Codeforces, and Waterloo are pre-approved. Please ask if you'd like another contest to count
- Contests happen generally at least once a week. Do them early, as I do not want people saying at the end of the semester that the times of the remaining contests conflicted with things
- Performance in contests does not affect grades, only participation. I will be paying attention to your ratings though, and you should strive to improve them!
- This is more contests than the intro section, but you have fewer problems, and contests should be easy for the members of this section
Class 0: 1/13
http://codeforces.com/contest/612/problem/C
https://icpc.baylor.edu/worldfinals/problems/icpc2015.pdf tile cutting and catering
Notes
Homework
Contests
Codeforces: 1/14 11:35 am Topcoder: 1/20 7:00 am
Class 1:1/25
http://codeforces.com/contest/616 https://icpc.baylor.edu/worldfinals/problems/icpc2015.pdf DNA sequencing and asteroids
Presenters
Notes
Homework
Class 2: 2/1
Kevin in San Jose
Presenters
Notes
Homework
Class 3: 2/8
Presenters
Morton Mo (ym84)
Notes
Homework
Advanced: finals 2014 problems C and D
Class 4: 2/15
No Class: snow
Presenters
Notes
Homework
Class 5: 2/22
Presenters
Jiawei Zhang - Load Balancer
http://codeforces.com/problemset/problem/609/C
Notes
Homework
http://cs.baylor.edu/~hamerly/icpc/qualifier_2013/final_problem_statements.pdf erratic ants, or shot cube
Finals 2014 E and K
Class 6: 2/29
Presenters
Alan Guo: bracket sequence http://codeforces.com/contest/612/problem/C
Notes
intro: http://acmgnyr.org/year2007/h.pdf