CSE 109 Systems Software (4)
James Femister (Spring 2017), Jason Loew (Spring 2017, Fall 2017)
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 or CSE 18
Walter Savitch, "Absolute C++", 6th Edition, Addison-Wesley, 2015, ISBN 978-0130895929
Samuel P. Harbison and Guy L. Steele Jr., "C:A Reference Manual", 5th Edition, 2002, ISBN 978-0130895929
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 create and use hash tables.
7. Ability to process text.
Relationship between Course Outcomes and Student Enabled Characterisitics:
CSE 109 substantially supports the following student enabled characteristics:
A. An ability to apply knowledge of computing and mathematics appropriate to the discipline.
J. An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling.
Prerequisites by Topic
- Top-down design
- Primitive data types.
- Repetition and selection.
- Pointer structures
Major Topics Covered in the Course
- Introduction to UNIX and emacs
- Review of structures shared by Java and C++
- Passing variable to functions
- Hashing, Data Structures
- Text file reading and writing
- Binary file reading and writing
- Classes and Subclasses
- Templated Classes
- Debugging using gdb
- Assembler Basics
- Linker Basics
- Loader Basics
- Lexical Analysis
- Virtual Machines
- Building Mid-Size Programs
Assessment Plan for the Course
The students are given six (reasonably short) homework assignment, seven programming assignments, two tests, and a final examination. Each homework and programming assignment typically covers a single topic. Each test has four questions, and the final examination has eight questions. Each of these questions typically covers a single topic. I track the performance of the students on each homework assignment, each programming assignment, and each question on the tests and final examination.
How Data in the Course are Used to Assess Program Outcomes: (unless adequately covered already in the assessment discussion under Criterion 4)
Each semester I include the above data from the assessment plan for the course in my self-assessment of the course. This report is reviewed, in turn, by the Curriculum Committee.