The Practice of Programming

Update 6.2.2009: I've received the list of students for the class. If you took TOP with me last year, your wiki account is unchanged (contact me if you forgot your userid or password). Otherwise, your wiki account id is first initial concatenated with last name (e.g., Adnan Aziz is aaziz) and password is your uteid (please update it immediately). Assignment 0 is due this Friday (i.e., 6.5.2009).

Update 6.1.2008: I've been told I will have the roster tomorrow (6.2.2009 - Tuesday), and I'll create accounts and mail each of you as soon as I receive the roster.

Note: As of 5.29.2009, I still don't have a list of student enrolled in this class. I've updated the due dates for assignments for 2009, but can't create your Wiki pages, so Assignment 0 is on hold. I'll be away over the weekend (5.29-5.31) and not able to read mail.

www.ece.utexas.edu_adnan_pop_pop-cover.jpg Adnan Aziz
Graph
1-(512) 475-9774
ACES 6.120

Summary

The goal of this course is to read through Brian Kernighan and Rob Pike's book “The Practice of Programming” and thereby gain an understanding of techniques that make individual programmers more effective and productive. Here is the official syllabus.

Text

There is an official website for the book, but Kernighan and Pike maintain a far superior site which includes source code for examples.

Kernighan teaches a class based on the PoP text; he has links to some wonderful readings.

Submission Guidelines

Each of you will have a personal Wiki page which you will use to upload your homeworks; I will email you individually about the Wiki page. Detailed submission notes are linked here.

Format/Evaluation

I will assign 9 assignments consisting of exercises from PoP. The homeworks will not be programming intensive-their goal is to make you read PoP in an organized manner. Grades will be assigned solely on the basis of performance on the homework.

Assignment 0

  • HW is to be submitted via uploading on the class wiki—please go through this exercise to make sure your account is working, and that you can upload/edit/create pages.

HW is due by 11:59pm of the due date.

Due Friday, June 5, 2009

Assignment 1

Read Chapter 1 and turn in answers to questions 1-1, 1-2, 1-4, 1-5, 1-6, 1-7, 1-9, 1-11. (For 1-6, do only the first part, i.e., don't experiment with different compilers.)

Due Tuesday, June 9, 2009

Assignment 2

Read Chapter 2 and turn in answers to questions 2-2, 2-3, 2-5, 2-6, 2-9, 2-12, 2-14, 2-16. (For 2-9, implement it in C only.)

Due Sunday, June 21, 2009

Assignment 3

Read Chapter 3 and turn in answers to questions 3-2, 3-3, 3-5, 3-6.

Due Sunday, June 28, 2009

Assignment 4

Read Chapter 4 and turn in answers to question 4-8, and write a critique of the CSV library implementation in Section 4.2, and how the implementation in Section 4.3 addresses your critique.

Due Sunday, July 5, 2009

Assignments 5/6

Read Chapters 5 and 6. For each piece of questionable code in Section 5.2 and 5.4, explain what's wrong with it. Turn in an answer to question 6-1. Read the extreme programming view of testing at http://www.extremeprogramming.org/rules.html and critique it.

Due Sunday, July 12, 2009

Assignments 7/8

Read Chapters 7 and 8. Describe the steps K&P took to improve the performance of the spam filter example in Chapter 7. Turn in an answer to Exercise 7-3. For each piece of questionable code in Chapter 8, write a 1-3 sentence explanation of what's wrong with it. (There are 15 instances of questionable code; you don't have to copy out the entire listing.)

Due Sunday, July 26, 2009

Assignment 9

Read Chapter 9 and write a summary of what you learned - 1 to 3 paragraphs per section.

Due Sunday, Aug 2, 2009

Tools & How-tos

Related classes

  • Programming Brian Kernighan's Advanced Programming Techniques is a fabulous class. His book The Practice of Programming is the best programming book I've ever read.
    • Prof. Kernighan Spring 2008 class, linked above, does not have all the notes in place; you can get them from the Spring 2005 version of the class.
    • George Necula's class on software engineering talks about many critical issues software development. It's tuned towards much larger projects than the ones we've been doing, but still worth reading through.
    • An OS class can help you understand what goes on under the hood—CS162 at Berkeley is the one I learned from.
    • The Art of Unix Programming - free online version, see especially Chapter 1. “Those who do not understand Unix are condemned to reinvent it, poorly”
  • Algorithms MIT makes all its courses avaible freely - here's the algorithms class at MIT, including videos of lectures; it's co-taught by Leiserson, the L in CLRS.
 
classes/pop2009.txt · Last modified: 2009/06/02 23:59 by adnan
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki