CS 265 Advanced Programming Techniques - Syllabus

Term and Credits

Summer 2017-2018
3 Credits

Room and Time

Tuesday/Thursday 2:00pm-3:20pm University Crossings Room 149

Instructor

Mark Boady
Electronic Mail Address: mwb33@drexel.edu
Office: University Crossings 138
Extention: 215-895-2347
Office Hours: Monday 4-5PM, Tuesday 12-1PM, Thursday 12-1PM

Teaching Assistant(s)

Alexander Duff
Electronic Mail Address: amd435@drexel.edu
Office: Drexel CLC UC 152
Office Hours:Monday 2-4PM, Wednesday 2-4PM
https://www.cs.drexel.edu/clc

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 Objective and Goals

Audience and Purpose within Plan of Study

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
CS 172 Minimum Grade: D or CS 176 Minimum Grade: D or CS 133 Minimum Grade: D or SE 103 Minimum Grade: D or ECEC 301 Minimum Grade: D

What Students Should Know Prior to this Course

  1. Ability to read and understand code.
  2. Basic understanding of program execution.
  3. Ability to write simple recursive programs.

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.

Textbook

The Practice of Programming
Brian W. Kernighan and Rob Pike
ISBN-13: 978-0201615869
ISBN-10: 020161586X
Buy from Amazon

Course Material

Lectures

Labs

Homeworks

Quizzes

Exams

Slack Channel

Special Circumstances

Course Policies

Academic Honesty Policy

The CCI Academic Honesty policy is in effect for this course. Please see the policy at http://drexel.edu/cci/resources/current-students/undergraduate/policies/cs-academic-integrity/.

Academic Honesty Violations will be reported to the University. Punishment will be determined by the severity of the incident. Punishments include, but are not limited to,

Grading and Policies

Final grades will be determined by your total points weighted according to this distribution. Grades may be curved but are generally computed via the formula below. It may be modified at the instructor's sole discretion, but letter grades will generally not be lower than those shown here.

Computer/Software Help
iCommons: http://drexel.edu/cci/about/our-facilities/rush-building/iCommons/

University Policies
In addition to the course policies listed on this syllabus, course assignments or course website, the following University policies are in effect:

Topics

  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

Tentative Course Schedule

Please see the appropriate assignment webpages for a detailed description of course deliverables.

Week Topic Reading Lab/Assignment Due 11:59PM Sunday
1 (6/25/18) Intro to the Unix Programming Environment   lab01
2 (7/2/18) More Unix, Intro to Bash, GIT   lab02
3 (7/9/18) Bash Scripting   lab03
4 (7/16/18) Awk, Regular Expressions, git   lab04
5 (7/23/18) Programming Style and Python Chapter 1 lab05
assn1
6 (7/30/18) Algorithms and Data Structures Chapter 2 lab06
7 (8/6/18) Design and Implementation Chapter 3 lab07
assn2
8 (8/13/18) Interfaces and Makefiles Chapter 4 lab08
9 (8/20/18) Debugging and Testing Chapters 5 and 6 lab09
10 (8/27/18) Performance Chapters 7 and 8 lab10
assn3
11 (9/3/18) Final Exam - Time and Location TBD