COMP 211: Principles of Imperative Computation
Sections 1 and 2, Spring 2019
         Home Schedule Policies Resources         

Course info

  • Professor: Victoria Manfredi, vumanfredi [at] wesleyan.edu, Exley 627, 860-685-2194

  • Lectures: Tu and Th, 10:20-11:40p, Exley 121

  • Labs: Wed 1:20-2:40p (Sec 1) and 2:50-4:10p (Sec 2), Exley 072.

  • Office hours: Mo 3:30-5p, Tu 4:30-6p, Th 3-4:30p, and by appointment

  • Online discussion platform: We'll use Piazza, please sign up. Course page here

  • Course assistants: Ava Biery, Caroline Bhupathi, Nikhil Ghosh, Adina Gitomer, Shiv Khanna,                                  Tong Kong, Madeleine Kusel, Shota Nakamura, Yuan Sun

  • Help sessions: Su 7-9p, Mo 7-9p, Tu 7-9p, Exley 074

Description

COMP 211 is the first semester of the one-year gateway sequence to the Computer Science major. It is intended for students who are considering Computer Science as a potential major as well as those who are looking for an in-depth introduction to the field beyond the fundamentals of programming. In addition to learning how to program in C, we will also focus on developing computational thinking skills.


Student Learning Goals
  • Algorithms: You will learn to design and analyze algorithms for solving computational problems. Topics to be covered include searching, sorting, and graph algorithms, and basic ideas of time and space analysis such as big-O notion and common complexity classes. While this course will cover many concepts in algorithms, this is not specifically an algorithms course and there are many topics we will not cover that you will see if you take COMP 312.

  • Data structures: You will learn to use and implement different structures to store data including arrays, linked-lists, stacks, queues, hash tables, trees, graphs. These data structures will be used to store the data that is manipulated by the algorithms that you will implement.

  • Programming: You will learn how to transform algorithmic ideas into C programs and how to be a good C programmer by writing, testing, and debugging code.

Why C?

The short answer is that if you understand how C works, you will have a deeper understanding of how memory is used in any programming language and any other imperative programming language will be straightforward to learn. You will also learn that you can still do object-oriented like things in C using something called a struct. An interesting perspective on C can be found in this article.

My goal in this class is not to teach you the current latest and greatest programming language but to teach you the fundamentals you need so that you can more easily learn any programming language. Read more about programming language comparisons here, here, and here.

Pre-requisites

This class now has COMP 112 as a pre-requisite. While the course is self-contained and provides a complete introduction to programming and computer science, the course moves quickly, and and in the past we have found those without any prior exposure to computer science may struggle. To inquire about skipping COMP 112, please submit a pre-req override request explaining your programming and/or math background and any special motivation for starting with COMP 211.

Assessment

Your grade will be based on approximately 10 homework assignments (60%), a midterm exam (20%), and a final exam (20%). Assignments will be posted on the schedule. All work must be submitted electronically. Grades and feedback on code submissions will be returned as paper, with written work and code printed out with comments written on it directly. I will email you your grades periodically to double-check that the information that I have is consistent with what you have. It is your responsibility to check your grades and feedback and report any issues promptly. It is always possible for mistakes to happen in recording scores, especially in larger classes. If I do not hear about a problem, it will not be fixed.