CSE 109 Systems Programming (4)
Instructor: Edwin Kay
Current Catalog Description
Advanced programming and data structures, including dynamic structures, memory allocation, data organization, symbol tables, hash tables, B-trees, data files. Object-oriented design and implementation of simple assemblers, loaders, interpreters, compilers and translators. Practical methods for implementing medium-scale programs. Prerequisite: CSE 17
Textbook
Savitch, Walter, Absolute C++, 3rd Edition, 2008, Addison Wesley
References
Course Goals
1. Fluency in writing code in C++.
2. Ability to use of C++ templates.
3. Ability to create subclasses.
4. Ability to use classes to represent abstract data types.
5. Ability to effectively use classes to construct medium-scale software.
6. Ability to process text.
Prerequisites by Topic
1. Top-down design
2. Primitive data types.
3. Repetition and selection.
4. Recursion.
5. Pointer structures
6. Classes.
Major Topics Covered in the Course
1. Strings and dynamic arrays.
2. Pointers and binary trees.
3. Creating subclasses, virtual functions.
4. Template classes.
5. Elementary parsing.
6. Elementary code generation
Laboratory projects (specify number of weeks on each)
There are eight programming projects, one week per project.
Estimate CSAB Category Content
CORE ADVANCED
Data Structures 1.0
Computer Organization and Architecture 0.5
Algorithms Software Design 1.0
Concepts of Programming Languages 0.5
Oral and Written Communications
Every student is required to submit at least _0_ written reports (not including exams, tests, quizzes, or commented programs) of typically __0__ pages and to make __0___ oral presentations of typically ___0__ minutes duration. Include only material that is graded for grammar, spelling, style, and so forth, as well as for technical content, completeness, and accuracy.
Social and Ethical Issues
One class is devoted to the issue of what constitutes unfair collaboration on assigned work. Those who do not adhere to the guidelines for doing ones own work are penalized with a lower grade.
Theoretical Content
Concepts of object oriented programming: 15 classes.
Data Structures: 10 classes.
Recursive descent parsing 2 classes
Problem Analysis
Each of the eight programming projects confronts the student with one large problem and a number of smaller problems. The larger problem consists of reducing the problem given in the assignment to one that can be programmed. The smaller problems consist of the determining the algorithms for coding the various C++ functions.
Solution Design
For the last four programming assignments, the students constrict a compiler for a small language. The compiler generates code for a small virtual machine. The overall design of the software is given to the students in the form of the four programming assignments. For each assignment the students must design their own C++ classes for the corresponding abstract data types. They must also design the algorithms for implementing their programs.