CSE 490c (a.k.a. CSE 303):
Concepts and Tools for Software Development

Spring Quarter, 2004


Catalog Description

Introduction to key concepts and tools in the development of software, not introduced in the introductory programming courses. These include programming with explicit memory management and layout (e.g. C or C++), techniques for group software development, modern design, implementation, and testing patterns and strategies, and societal impact.


Course Motivation and Purpose

  1. 142 & 143 focused on the essentials of programming, abstraction, composition, etc.; they stayed at a fairly abstract, high level; and hid as many distracting details of the OS, IDE, and machine representations as possible. Now that students know these basics, and have reached a certain level of maturity and sophistication, we're going to teach them what's going on "under the hood". We're going to give the students more power, more control, and more understanding, and also more responsibility and danger. At the OS level (Unix etc.), the IDE level (javac/gcc, make, etc.), and the PL level (C).
  2. Teach (or give exposure to) additional skills and concepts that are important in being a productive, (semi-)professional programmer. Self-reliance, group programming, design skills, testing & debugging skills, societal impact.  This "book learnin'", along with experience, should enable students to become effective, professional programmers.

Outcomes


Topics

(Roughly in order of appearance in the course)
chambers@cs.washington.edu