Advanced Programming Tools and Techniques(CS 265/CS 571)

 Announcments  Lectures  Programs  Course Resources   Assignments and Quizzes  Grading Policy
Course Description
Introduction to the basic principles of programming practice: testing, debugging, portability, performance, design alternatives, and style. Application in a variety of programming languages, programming environments, and operating systems. Introduction to tools used in the software development process for improving program functionality, performance, and robustness.
Course Goals
To provide students with the skills needed to effectively design, develop, implement, debug, test, and maintain programs and more generally to solve problems using a computer. The course will teach these skills through the use of different programming languages, tools, and environments, though the general principles are independent of any particular language, tool, or environment. General themes include clarity, simplicity, generality, and automation.
Course Objectives
This is a required sophomore level course for Computer Science students. A graduate version of the course is available as a pre-core course for those students who are not sufficiently comfortable developing, debugging, testing, tuning, and porting programs.
Students should have some programming experience (CS 172 or equivalent)
Jeremy Johnson
Office: 100 University Crossings
phone: (215) 895-2669
office hours: Monday 4:30-7, T 4-6, W 1-2. Additional hours by appointment.
Kurt Schmidt
Office: 105 University Crossings
phone: (215) 895-1848
office hours: MWF 2-3 and W 5-6.
Jie Li
Office: 147 Univ. Crossings (CS Student Resource Center)
office hours: Friday 1-2.
Servesh Tiwari
Office: 149 Univ. Crossings (CS Student Resource Center)
office hours: Thursday 1-2.
Meeting Times
T 6:00-9:00 in University Crossings 149
Course Mailing List

Please use this list for questions and discussions related to the course. If you know the answer to someone's question, please feel free to jump in, as long as well it is not an answer to a homework problem. I will moderate the list so that frivolous mail and spam is not forwarded.

Brian W. Kernighan and Rob Pike, The Practice of Programming, Addison-Wesley, 1999.


  1. The Unix Programming Environment - basic commands, editor, shell, file system, filters.
  2. Program development tools - context sensitive editor, make, cvs, debugger.
  3. Scripting languages - Awk, Perl.
  4. Programming style and Interfaces.
  5. Design and implementation (C, C++, Java)
  6. Testing and debugging programs.
  7. Performance and portability.
  8. Metaprogramming - notation, macros, templates, little languages.


  1. Four Programming Assignments (40%)
  2. Four Quizzes (40%) - student's may drop one quiz score
  3. Final Project (20%)

See the course schedule for quiz times and assignment due dates.

Assignments and exams will be returned on a regular basis to provide feedback to students. All students must do their own work, unless explicitly stated otherwise. Any violation of this will result in a zero grade for the assignment. A second violation may lead to an F for the course.


Reference Books
Many of these books can be accessed from Safari.
  1. Awk
  2. Bash
  3. C
  4. C++ and STL
  5. Java
  6. Perl
  7. Unix
  8. General Topics of Interest
Web Pages
  1. Awk
  2. Bash
  3. C
  4. C++ and STL
  5. Java
  6. Perl
  7. Unix
  8. General Topics of Interest

Look Here for Important Announcements

Announcements (Tue. Jan. 18 @ 11:00pm)


This list is subject to change.
  1. Week 1
    1. Jan. 4, 2005 (Unix Programming Environment)
  2. Week 2
    1. Jan. 11, 2005 (Shell Games)
  3. Week 3
    1. Jan. 18, 2005 (Programming Style)
  4. Week 4
    1. Jan. 25, 2005 (Algorithms and Data Structures)
  5. Week 5
    1. Oct. 26, 2005 (Design and Implementation)
  6. Week 6
    1. Nov. 2, 2005 (Design and Implementation)
  7. Week 7
    1. Nov. 9, 2005 (Interfaces)
  8. Week 8
    1. Nov. 16, 2005 (Debugging and Testing)
  9. Week 9
    1. Nov. 23, 2005 (Performance and Portability)
  10. Week 10
    1. Nov. 30, 2005 (Metaprogramming)

Programs and Worksheets

Assignments and Quizzes


Created: 1/03/05 (revised ) by