Programming Concepts and Tools :: CSE 374 :: Winter 2016

calendar :: lectures :: homework

Contact Information

Instructor: Aaron Bauer
Staff Email (preferred): cse374-staff [at] cs [dot] washington [dot] edu
Email: awb [at] cs [dot] washington [dot] edu
Office: Paul Allen Center (CSE) 212

Course Information

Course Classroom: Mary Gates Hall 241
Course Time: 12.30 - 13.20
Office Hours: Thursdays 11-12 and by appointment (or whenever you come by and see me -- I'm usually in my office in the afternoon)
Teaching Assistants: Soumya Vasisht, Donny Huang, and Jane Zhang
Teaching Assistant Office Hours:
Soumya Mondays 16.00 - 17.00 CSE 220
Jane Tuesdays 14.00 - 15.00 CSE 021
Donny Wednesdays 10.00 - 11.00 CSE 218

Optional Course Texts: Midterm: In class on February 8 (pdf)
Midterm Review Session: 14.00-15.00 February 6, Smith Hall 205
Midterm Solutions: pdf
Final: 8.30-10.20 March 17 (pdf)
Final Review Session: 14.00-15.00 March 12, Smith Hall 102
Final Solutions: pdf
Previous exams

Course Description

From the catalog:
Covers key software development concepts and tools not in introductory courses. Concepts of lower-level programming (C/C++) and explicit memory management; techniques and tools for individual and group software development; design, implementation, and testing strategies.
This is a very practical, skills-oriented course. The goal is to gain exposure to a wide variety of useful concepts and tools. Lecture will introduce these, and the homework will provide an opportunity to practice. There will be a strong emphasis on independent learning, as it will not be possible to cover each topic comprehensively in class. Topics will likely include:
  1. Files, processes, and shells
    1. Command-line utilities
    2. I/O redirection
    3. File editing
    4. Shell scripting
    5. String processing; regular expressions

  2. C Programming
    1. Memory model
    2. Pointers
    3. Arrays
    4. Manual resource management
    5. The preprocessor

  3. Programming tools
    1. Debuggers
    2. Profilers
    3. Linkers
    4. Compilation managers
    5. Version-control systems

  4. Software-engineering issues
    1. Multiperson programming
    2. Specification
    3. Testing
    4. Code-reuse patterns

  5. C++
    1. C with classes and objects
    2. Other differences from C

  6. Concurrency
    1. Threads
    2. Races and deadlocks
    3. Locks and Transactions
    4. Message-passing

Course Grading

Here is the breakdown:

Extra Credit Policy:


Late Policy:

Deadlines will be given with each assignment. These deadlines are strict. There will be no credit for late work. It is exceedingly unlikely that skipping class or being late to class because of homework is in your interest. For the entire quarter, you may have four "late days". You are strongly advised to save them for emergencies. You may not use more than two for the same assignment. On group projects you may only use late days if all members of the group have them available, and all members of the group will be charged for each late day used. They must be used in 24-hour (integer) chunks. This policy may not be the same as in your other classes. You are responsible for understanding it if you choose to submit late work.

Academic Integrity:

You are encouraged to discuss the material in this course, including homework problems. We all learn better when we trade ideas with others, including course staff and fellow students. But you must produce your own homework solutions and you must not look at other students' solutions or other information that takes away the intellectual challenge of the homework.

Unless specifically told otherwise, you are to complete assignments individually. You may discuss assignments in general terms with other students including a discussion of how to approach a problem, but the code and other work you submit must be your own. The intent is to allow you to get some help when you are stuck, but this help should be limited and should never involve details of how to write a solution. You may not have another person (current student, former student, tutor, friend, anyone) "walk you through" how to solve an assignment.

If you are ever unclear about how to represent what work you have done, (a) ask and (b) describe clearly what you have done. If you do, the worst that will happen is you will lose some credit on an assignment. This is much better than the alternative. If you are at all in doubt about whether your collaboration was appropriate, include a description of your collaboration with your homework submission. If the course staff receives homework submissions that are too similar to have been created independently, or are derived from other sources, we will pursue the maximum penalty allowed by the University.

Course Lectures

Course Homework

Course Links