Course Syllabus

Office hours:

John Greiner Instructor greiner M 2-3pm DCH 3093
Austin Tianyi Liu TA tl54 Th 5:30-6:30pm Will Rice Commons
Avery Whitaker TA ajw6 T 8-9pm Hanszen Commons
Austin LiuAvery Whitaker

What is this course about?

One of the core ideas in computer science is to start with a new problem and figure out how to write a computer program to solve it.

This course will build upon previous core CS courses (COMP 140, 182, 215) to focus on this general problem-solving goal with lots of practice. We will continue to emphasize the process of Computational Thinking:

  1. Understand the problem, its inputs, and its outputs
  2. Decompose the problem
  3. Create and test an algorithm to solve the problem
  4. Create and test a computer program using the algorithm to solve the problem

We will reinforce this with more details about how to identify what algorithmic techniques might be useful for a given problem.

We will continue to emphasize solving real-world problems, introducing new mathematical tools, data structures, algorithmic techniques, and algorithms as necessary.  We will emphasize solving problems in real-world contexts, including technical interviews and programming contests, where the problem-solving aspect is the core feature.  We will de-emphasize other aspects of coding, such as building nice GUI interfaces.

We will emphasize pragmatic aspects of problem-solving over theory.  This includes looking at debugging, libraries, and coding tips.  We will include some aspects of theory, such as analyzing asymptotic run-time and correctness, but without an emphasis on formal proofs.

We will continue to emphasize the ability to communicate your problem-solving process and your solutions.  You'll work both in groups (as in COMP 140) and individually to solve problems.  Within examples based upon technical interviews, you'll describe your process in real-time to the mock interviewer.  You'll also create short presentations to describe or teach algorithms to others.

How is this different from COMP 382?

Both courses will look at similar data structure and algorithmic material, but the emphasis here is on pragmatics, rather than theory.  The details of the data structure and algorithmic material will be different, as the two courses use mostly different examples.  COMP 382 typically has little programming and lots of proofs.

COMP 382 is required of CS majors, while this course is not.

COMP 382 usually requires all work be done individually, while this course includes substantial teamwork during in-class exercises.

Why should I take this course in addition to COMP 382?

  • This course should improve your algorithmic skills.
  • This course may serve as a good stepping stone prior to COMP 382.  That's because we'll cover some of the same topics, but without the formal proofs.
  • This course should improve your coding skills.
  • This course should improve your presentation skills.
  • This course should help you identify which techniques might be useful for a given problem.
  • This course serves as an elective in the CS major.

Learning Outcomes

  • Use computational thinking to understand problems and design algorithms
  • Develop programs using best practices
  • Use a variety of mathematical techniques, data structures, algorithmic techniques, and algorithms
  • Communicate the problem-solving process and solutions

How is this class structured?

This course is structured similarly to COMP 140, with required material before class, hands-on exercises during class, and individual assignments.  Attendance is expected.

Many details of the class are still a work in progress and subject to change, and some will be developed during the semester.  Be sure that you don't overlook any content that is posted after the start of the semester.  I will be looking for frequent feedback on what works and what doesn't.

Before class Quizzes Daily quiz before class Individual 10%
During class Participation In-class hands-on exercises Group & individual 14%
After class Assignments Seven and a "half" Individual 45%
Midterm During class Individual 10%
Final During finals week Individual 20%
Feedback Weekly short feedback Individual 1%

Policies

Extensions

Extensions will only be granted under exceptional circumstances (such as medical emergencies).  Class deadlines and extracurricular activities are part of the university experience and not exceptional.

Late Submissions

Late submissions are not allowed, except with the previously mentioned extensions.  The automated judging systems we use in this course do not make late submissions practical to administer.

Note that a deadline of 8pm says that an assignment must be turned in by 8:00:00pm, not 8:00:01.  Especially given network latency, do not wait until the last minute to submit.

Honor Code

The solutions you turn in for all quizzes, assignments, and exams must be your own.

You are allowed to discuss course material and general approaches to problems with your classmates and the staff, but you should never misrepresent someone else’s work as your own. Work you do in class may be used and referred to in any manner by any member of the group who was present during that class.

You are not allowed to copy code from anywhere. This includes, but is not limited to, your friends, classmates, and online resources.  You may use printed and online sources to better understand concepts and programming language and library details.

This policy has several consequences, which include, but are not limited to:

  • You may not use online forums (outside of the class forums) to ask for programming help.
  • You may not ask anyone to give you a copy of their code or, conversely, give your code to another student who asks you for it (this includes showing them your code, reading them your code, e-mailing them your code, etc.). Similarly, you should not discuss your strategies to such an extent that you and your collaborators end up turning in exactly the same code. Discuss ideas together, but do the coding on your own.
  • You may not look at solutions to assignments from previous runs of this course.
  • You should neither look for nor post your solutions in any public forum, including, but not limited to, social media sites, Github, and other online forums.
  • If you happen to have solved a problem like one on an assignment or exam, do not reuse your solution.  Solve it again.

Each exam will specify what resources that you may use.

Disabilities

If you have a documented disability that will impact your work in this course, first register with the Disability Support Services Office in the Allen Center, then contact me in the first two weeks of class to discuss your needs.

 

Course Summary:

Date Details Due