## Announcements

- April 22: Final Exam on
*April 25th @1:30 PM in Room 1199* - April 14: C0VM Checkpoint Due!
- April 12: Written C due, Written D posted!
- April 07: C0VM posted!
- April 05: Written C posted
- April 05: Written A/B due
- April 01: Lights Out posted

## Course Overview

**Title:** Principles of Imperative Computation

**Description:**

This course teaches imperative programming and methods for ensuring the correctness of programs. It is intended for students with a basic understanding of programming (variables, expressions, loops, arrays, functions). Students will learn the process and concepts needed to go from high-level descriptions of algorithms to correct imperative implementations, with specific applications to basic data structures and algorithms. Much of the course will be conducted in a subset of C amenable to verification, with a transition to full C near the end.

**Units: **12

**Co-requisites:**
Either 21-127 or 15-151 is a co-requisite (must be taken before or in the same semester). This course prepares students for 15-213 and 15-210.

More information about the course objectives can be found in the syllabus.

## Logistics

### Instructors

Prof. Saquib Razak,

srazak@cmu.edu, CMUQ 1018, 4454-8553,

*Office hours:* Sunday, 10:00AM - 12:00PM

Prof. Mohammad Hammoud,

mhhammou@qatar.cmu.edu, CMUQ 1006, 4454-8506,

*Office hours:* Monday & Wednesday, 3:30PM - 5:00PM.

### Teaching Assistant

Tamim Jabban,

tamim@cmu.edu, CMUQ 1004, 4454-8407,

*Office hours:* Sunday: 2:30 to 4:30 PM, and Wednesday: 4:00 to 5:30 PM.

### Class hours

**Lectures:** Monday & Wednesday, 01:30 - 02:50 PM, Room 1199

**Labs:** Tuesday, Time: 1:30 - 2:20 PM, Room 2035

**Recitations:** Thursday, Time: 1:30 - 2:20 PM

## Grading

The course is graded on a 1000-point scale. Absent exceptional circumstances, scores of 900 and above will be given an A, scores of 800 and above will be given a B, etc. Scores below these thresholds may receive the higher grade based on participation and/or exam performance on the sole discretion of the instructor.

**Exams 50%**

- Two 125-point midterms and a 250-point final

**Homework 45%**

- written assignments
- one-week programming assignments
- 2 two-week programming assignments with a checkpoint

**Labs and Quizzes 5%**

- Labs and quizzes are mostly for your own improvement, but they will be given a small number of points