|
Syllabus for CSE303: Concepts and Tools for Software Development
|
|
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
|
 |
Computer Science & Engineering
University of Washington
Box 352350
Seattle, WA 98195-2350
(206) 543-1695 voice, (206) 543-2969 FAX
[comments to webmaint]
|