Steam-powered Turing Machine University of Washington Computer Science & Engineering
 Syllabus for CSE303: Concepts and Tools for Software Development
  CSE Home   About Us    Search    Contact Info 

CSE303: Concepts and Tools for Software Development

Credits
3
Catalog description
Introduction to key concepts and tools in the development of software not introduced in the introductory programming courses. Includes 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.
Prerequisites
CSE 143.
Proposed 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.
Textbook(s) and/or other required material
Linux Pocket Guide by Daniel J. Barrett, O'Reilly, 2004. Programming in C (3rd Edition) by Stephen G. Kochan, Sams Publishing, 2005.
Course objectives
A primary goal of this course is to provide students with abilities, skills, and concepts that will make them more efficient software developers. More specifically, the class teaches students: - The skills necessary to automate common computing tasks including file-manipulation and string-processing. - C and C++-level programming with emphasize on memory management and pointers. - Common programming tools including debuggers, profilers, linkers, and version-control systems. Because programming systems are themselves interesting and often quite beautiful (or at least elegant), the class also teaches students how to develop a sense of what distinguishes well designed from poorly designed systems. The class teaches software-engineering practices regarding specification and testing. Because it is important for people engaging in professional activities to think about how their work relates to the larger social context, the second main goal of this class is to make students sensitive to the societal and ethical implications of computing. A portion of this course is set aside for discussions on this topic. The class teaches students how to critically evaluate several societal/ethical implications of computing and develop the intellectual maturity to evaluate new issues as they arise.
Topics covered
Topic 1: Societal and ethical implications of software - Professional and ethical responsibility - Impact of computer engineering solutions in a global, economic, environmental, and societal context - Contemporary societal and ethical issues Topic 2: Expediting and automating tasks: - The Linux operating systems and the shell - Manipulating files and strings through the command line - Utilities (e.g., find, awk, sed, grep) - Shell scripts Topic 3: Programming in C - Emphasize on memory management (stack and heap) and pointers - Brief introduction to C++ Topic 4: Software development tools - Build tools - Debuggers - Version control systems - Profilers Topic 5: Basic software engineering concepts - Specifications, interfaces, and testing - Multiperson programming - Security and defensive programming
Course structure
Class: 3 days per week, 1 hour Assignments: approximately 6 assignments spread throughout the quarter Essays: three short essays on societal and ethical implications of computing Midterm and final exam
ABET Outcomes Assessed
(f) an understanding of professional and ethical responsibility
(h) the broad education necessary to understand the impact of computer engineering solutions in a global, economic, environmental, and societal context
(j) knowledge of contemporary issues
Additional ABET Outcomes Covered
(g) an ability to communicate effectively
(k) an ability to use the techniques, skills, and modern computer engineering tools necessary for engineering practice
Last edited by
magda
Last modified
11:49am 23 Jan 2007


CSE logo Computer Science & Engineering
University of Washington
Box 352350
Seattle, WA  98195-2350
(206) 543-1695 voice, (206) 543-2969 FAX
[comments to webmaint]