CSE 109 Systems Software (4)

Instructor

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

Textbook

References

Samuel P. Harbison and Guy L. Steele Jr., "C:A Reference Manual", 5th  Edition, 2002, ISBN 978-0130895929

Course Outcomes

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

  1. Top-down design
  2. Primitive data types.
  3. Repetition and selection.
  4. Recursion.
  5. Pointer structures

Major Topics Covered in the Course

  1. Introduction to UNIX and emacs
  2. C
  3. Review of structures shared by Java and C++
  4. Passing variable to functions
  5. Pointers
  6. Makefiles
  7. Hashing, Data Structures
  8. Text file reading and writing
  9. Binary file reading and writing
  10. Classes and Subclasses
  11. Templated Classes
  12. Debugging using gdb
  13. Assembler Basics
  14. Linker Basics
  15. Loader Basics
  16. Lexical Analysis
  17. Parsing
  18. Virtual Machines
  19. 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.

© 2014-2016 Computer Science and Engineering, P.C. Rossin College of Engineering & Applied Science, Lehigh University, Bethlehem PA 18015.