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
- To effectively use the Unix programming environment - shell, file system,
scripts, regular expressions, filters, program development tools.
- To use scripting languages, such as Awk or Perl, to automate tasks and
write simple programs.
- To develop good programming style, organization, interface, and
documentation habits.
- To use effective procedures and tools for building, debugging, testing,
tuning, and maintaining programs.
- To be comfortable using and learning different programming languages
(C, C++, Java, Perl) and choosing the appropriate one for a given task.
- To use tools and write programs to assist in developing programs.
- Audience
- 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.
- Prerequisites
- Students should have some programming experience (CS 172 or equivalent)
- Instructors
- Jeremy Johnson
Office: 100 University Crossings
phone: (215) 895-2669
e-mail: jjohnson@cs.drexel.edu
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
e-mail: kschmidt@cs.drexel.edu
office hours: MWF 2-3 and W 5-6.
- TAs
- Jie Li
Office: 147 Univ. Crossings (CS Student Resource Center)
e-mail: jie.li@drexel.edu
office hours: Friday 1-2.
- Servesh Tiwari
Office: 149 Univ. Crossings (CS Student Resource Center)
e-mail: servesh.tiwari@drexel.edu
office hours: Thursday 1-2.
- Meeting Times
- T 6:00-9:00 in University Crossings 149
- Course Mailing List
-
cs-265@cs.drexel.edu
-
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.
- Textbook
Brian W. Kernighan and Rob Pike,
The Practice of Programming, Addison-Wesley, 1999.
Topics
- The Unix Programming Environment - basic commands, editor, shell, file system, filters.
- Program development tools - context sensitive editor, make, cvs, debugger.
- Scripting languages - Awk, Perl.
- Programming style and Interfaces.
- Design and implementation (C, C++, Java)
- Testing and debugging programs.
- Performance and portability.
- Metaprogramming - notation, macros, templates, little languages.
Grading
- Four Programming Assignments (40%)
- Four Quizzes (40%) - student's may drop one quiz score
- 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.
Resources
- Reference Books
Many of these books can be accessed from Safari.
- Awk
- Bash
- C
- C++ and STL
- Java
- Perl
- Unix
- General Topics of Interest
- Web Pages
- Awk
- Bash
- C
- C++ and STL
- Java
- Perl
- Unix
- General Topics of Interest
Look Here for Important Announcements
Announcements (Tue. Jan. 18 @ 11:00pm)
Lectures
This list is subject to change.
- Week 1
- Jan. 4, 2005
(Unix Programming Environment)
- Week 2
- Jan. 11, 2005
(Shell Games)
- Week 3
- Jan. 18, 2005
(Programming Style)
- Week 4
- Jan. 25, 2005
(Algorithms and Data Structures)
- Week 5
- Oct. 26, 2005
(Design and Implementation)
- Week 6
- Nov. 2, 2005
(Design and Implementation)
- Week 7
- Nov. 9, 2005
(Interfaces)
- Week 8
- Nov. 16, 2005
(Debugging and Testing)
- Week 9
- Nov. 23, 2005
(Performance and Portability)
- Week 10
- Nov. 30, 2005
(Metaprogramming)
Programs and Worksheets
- Awk
- Bash
- C
- A Sample helloWorld
program with instructions to compile and run in unix environment.
- Sample file input
(fgets, sscanf, argc, argv, fprintf)
- C++
- Java
- A Sample helloWorld program
with instructions to compile and run in unix environment.
- Sample file input
(FileInputStream, InputStreamReader, BufferedReader)
- Perl
- A Sample helloWorld program with instructions to run in unix environment.
Assignments and Quizzes
Solutions
Created: 1/03/05 (revised ) by jjohnson@cs.drexel.edu