1 / 14

CSCE 489 Problem Solving Programming Strategies

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.

farish
Download Presentation

CSCE 489 Problem Solving Programming Strategies

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSCE 489Problem Solving Programming Strategies John Keyser Spring 2018

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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.

  8. 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.

  9. 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

  10. 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!

  11. 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

  12. 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

  13. 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.

  14. Other items • Academic Honesty • Honors section • Questions?

More Related