/4883-Programming_Techniques

MW 1:00 - 2:20 : Introduction to competitive programming techniques and problem solving.

Primary LanguageC++

4883-Programming Techniques

Roster

Class Roster

General Course Info

Course Topics

  • Math
    • Combinatorics
    • Basic number theory
  • Standard libraries and data structures
  • Optimizations:
    • Complete Search, Backtracking, Pruning
    • Divide & Conquer
    • Greedy Algorithms
    • Dynamic programming
  • Graph algorithms:
    • Graph Traversal
    • Topological Sorting
    • Connectivity
    • Minimum Spanning Trees
    • Shortest Paths
  • String algorithms
  • Others given time

Grading

Will be based on number of problems solved. Full credit for on time solutions. Half credit for late submissions. Some credit for accepted solutions with issues (e.g. presentation errors),

Categories Portion of Course Letter Grade Grade Range
Solved Problems 90% A 89-100
Github 10% B 79-88
C 69-78
D 59-68
F below 59

Miscellaneous

  • All students need a Github account
  • All programs need to be turned in to pass the course
  • General Assignment Rules:
    • Due dates and times are as listed on assignment and can change with prior notice to class.
    • Formatting of programs is important, and will be graded accordingly.
    • You name is required on ALL documents uploaded or turned in. Handwritten name is not acceptable.
    • All files / programs created by you will end up in your assignments folder within your Github repository.
  • Attending class is one of the primary keys to doing well in this class. Students may be dropped for excessive absences. There is no distinction made between excused and unexcused.
  • Make-up exams are not given. If I see fit, then I will replace a missed exam with your final exam test grade (but this is optional to instructor based on circumstances, attendance, participation, etc.).
  • Programs containing syntax errors are unacceptable and will be returned without grading (your programs must work).
  • Periodically homework assignments will be taken up and graded. It is the student's responsibility to keep up with assignments and to ask questions over the assigned work, even if absent. All homework assignments are due at the specified time that may or may not be in conjunction with a class day. All assignments / homeworks will be uploaded via Github.

Academic Honesty

I take academic honesty very seriously. Many studies, including one by Sheilah Maramark and Mindi Barth Maline have suggested that "some students cheat because of ignorance, uncertainty, or confusion regarding what behaviors constitute dishonesty" (Maramark and Maline, Issues in Education: Academic Dishonesty Among College Students, U.S. Department of Education, Office of Research, August 1993, page 5). In an effort to reduce misunderstandings, here is a minimal list of activities that will be considered cheating in this class:

  • Using a source other than the optional course textbooks, the course website, or your professor to obtain credit for any assignment.
  • Copying another student's work. Simply looking over someone else's source code is copying.
  • Providing your work for another student to copy.
  • Collaboration on any assignment, unless the work is explicitly given as collaborative work. Any discussion of an assignment or project is considered collaboration.
  • Turning in someone else's work as your own work.
  • Plagiarism.
  • MSU's policy on plagiarism.

Tools to Stay Honest

  • Most plagiarizing, when it comes to programming, happens for two reasons:

      1. You don't have a clue how to solve the problem, so you get a friend or the internet to help.
      1. You didn't start early enough, and you're desperate to get something working the night before it's due, so you get a friend or the internet to help.
  • Both are easy to fix.

      1. Come ask me to explain. I promise you're not the only one who is confused.
      1. Start early. Then when you get stuck, you can ask for help the right way!
  • Please read this article as it pertains to our field of computer science: How To Code Without Plagiarizing

  • Ultimately it's not cool. It's an insult to those that actually do the work.

  • Lastly: Let me reiterate that I'm available for help ... a lot. No excuses. I've helped students at 1am via Slack. I'm online consistently afternoons and most nights, just shoot me a message.

Major Points

  • All students need a Github account.
  • All course communication will be done via Slack or Discord.
  • All programs need to be turned in to pass the course.
  • Programs containing syntax errors are unacceptable and will be returned without grading (your programs must work).
  • Your name is required on ALL documents uploaded or turned in. Handwriting on any document is not acceptable (unless specified).
  • All files / programs created by you will end up in your assignments folder within your Github repository.
  • Attending class is one of the primary keys to doing well in this class. Students may be dropped for excessive absences. There is no distinction made between excused and unexcused.
  • Make-up exams are not given. If I see fit, then I will replace a missed exam with your final exam test grade (but this is optional to instructor based on circumstances, attendance, participation, etc.).
  • Cheating or plagiarism on any assignment will not be tolerated.