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


Corey Montella (Fall 2022)





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 Outcomes where CSE CSE 109 substantially supported the Student Outcome #2:

SO#2 Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program's discipline.

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.