140 likes | 158 Views
Enhance programming skills through analysis, algorithms, implementation, and testing in a competitive format. Covers greedy algorithms, dynamic programming, and graphs. Attend lectures, labs, and contests to solve discrete problems efficiently.
E N D
CSCE 489Problem Solving Programming Strategies John Keyser Spring 2018
Course Goals • Teach you to: • Analyze problems • Determine algorithms to solve problems • Implement algorithms • Test code • Do this quickly and accurately • We will do this using a competitive programming format • Discrete problems to be solved – clear input/output requirements • Group solutions – see progress toward solutions among the entire class
Competitive Programming • Benefits: • Sharpens programming skills tremendously • Sharpens analytic skills and familiarizes you with more algorithms • Lets you deal with a wide variety of challenges in a short time • Encourages you to deal with time pressure, think more quickly • Lets you judge yourself vs. others – see where you really stand as a programmer • Drawbacks: • Can encourage some bad programming habits (shortcuts, bad style) • Some people do better without competition/time deadlines • Ignores many of the larger software development issues
What You are Expected to Know • 411 is a prerequisite. • We will sometimes go over algorithms/ideas you have seen there before • Greedy algorithms, dynamic programming, graph algorithms • But, I will be doing this assuming you’ve seen it before, and often will not go over the details • Basic 221 material will be completely assumed: • Basic data structures: • Lists/arrays, Trees, Graphs, Hash tables • Basic algorithms • Search/Sort, Tree manipulation, Graph traversal
Format of the Class • Monday and Wednesday: Lectures • Will attempt to cover a wide range of topics; see syllabus • May require reading in the textbook or outside textbook to learn details • Might go over/review problems • Might demonstrate some implementations • Homework problem sets • Given, generally, each Friday after lab, usually due subsequent Friday before lab time • Friday: Lab • Run somewhat like a contest – need to code rapidly • Will get a set of problems at start • Must solve what you can during the lab time • Individual (most) and Team (few) labs • Need to be present in lab each Friday
Special situations • Programming contests (open) • Tentative plans, will not be required • Probably near end of February • No lab on March 30 (Reading Day) – Tuesday, May 1 instead (final lab) • No planned meeting during final “exam” • Lab right before Spring Break might be cancelled or modified • To be determined: will poll class about options
Grading • Percentage of the problems solved • Problems given in weekly problem sets. • Problems given in weekly labs. A base will be set for how many are expected to be solved. • Base may be determined AFTER the lab period. • In weekly problem sets, there will often be a bonus (difficult) problem, and labs will often have more problems than the base amount. • All problems count equally. • Around 100 (at least 90, at most 125) problems over the course of the semester will be expected • A problem is ONLY solved if it is accepted (passes all test cases) on Kattis.
Grading • Problems completed by the due date get full credit • After the due date/lab: 1 week to “upsolve” problems • Complete the problem on tamu.kattis.com (NOT on open.kattis.com) • Email to me the list of problems you upsolvedin the previous week. • Excused absences may reduce the “base” of the number or give extension • Absences of less than 2 days: No change to weekly problem sets – all problems are still due at same time. • Absences > 2 days, with Dr.’s note or other documentation: Extension of weekly set for (n-2) days where n is number of days excused. • Absence from weekly lab, with documentation: Cannot be made up or upsolved. The base number of problems will be reduced accordingly.
Languages • You can submit programs in (almost) any language • Sometimes one language might be easier to use than others • e.g. Java bignums, Python for string processing/regex • Often efficiency is important • C++ is usually the best default choice • Warning: Python3 is notoriously slower than Python2; both can be MUCH slower than C++. Java can be slower than C++, occasionally significantly. • C++ will be the default version used in this class • My own examples, for instance • Language specific suggestions will usually be C++ based
Kattis • The problems will all be assigned on the Kattis system. • Kattis will be used for grading in the course. Your Kattis submissions will be treated as your own. • You will need to create a Kattis account, and submit problems through the correct site: • During lab, submit in the session itself • For weekly problems, submit on tamu.kattis.com • You may choose to make yourself anonymous to classmates. • But, I would encourage you to keep your profile public! • Keep your Kattis login private!
Logistics • Textbook: need to order it from publisher directly • Competitive Programming, 3rd Edition, by Steven and Felix Halim • Hardcover, paperback, or PDF • https://cpbook.net/#CP3details • Webpage: basic schedule/plans/assignments • http://courses.cse.tamu.edu/keyser/csce489/ • Kattis webpage: for assignments, labs, submissions • https://tamu.kattis.com/courses/CSCE489/2018Spring • Piazza: for class discussions/announcements • https://piazza.com/class/jbfnzzlldqk33q
Office Hours • John Keyser - instructor • HRBB 527C • Tuesday, Thursday 1:30-2:30 • Other times by appointment • Generally, Tuesdays, Thursdays are most open • GiovanaDelfino – Teaching Assistant • Visiting exchange student – University of São Paulo, Brazil • Significant programming experience (ICPC World Finals) • HRBB 527A • Office hours to be determined
For This Week • Sign and turn in (by lab time) the acknowledgement form • Join Piazza and check the Piazza page • Get set up in Kattis • Create a Kattis account • Go to tamu.kattis.com, and join our class • Problem Set 0 • Due this Friday, before Lab • Do three problems • They are meant to be very simple, to give you some very basic practice. Do not assume that future problems will be this easy! • This Friday • Lab will have a set of problems to work on • You will get the first longer problem set • None of these problems will require advanced algorithms or processing. As the course progresses, problems will get significantly harder.
Other items • Academic Honesty • Honors section • Questions?