Sample Assignments

This is a sample of assignments I have written for various courses. Permission is granted to use the material as long as all copyright notices are maintained. If you use any of the material, I would appreciate hearing from you about your experiences and hear about any enhancements you did or would like to see. Contact me (fsieker AT cs.colostate.edu) for information on solutions.

Each assignment consists of provided code files which the students may read, but not modify and code file(s) where they do the implementation. This structure makes it easy for the students to start with a "compilable" assignment with empty implementations generated by the IDE. The structure is designed to allow incremental development and easy testing with different test cases without the need to write explicit test code. The structure fits well with the automated grading tools I wrote, although those tools do not depend on this structure.

A substantial portion of the documentation for each assignment comes from javadoc or html pages generated by doxyden.


Simple printf() debugging framework

This simple framework has implementations in Java, C and C++ and presents an easy interface to introduce debugging output into code and turn it on/off at runtime. It is used in a variety of assignments.


Java Assignments

This is a sample of Java assignments used in a second semester programming class taught at CSU. The assumption is that the students are familiar with basic Java coding including loops, arrays, static/non-static methods and variables, interfaces, simple objects and some simple data structures such as ArrayLists.

Spreadsheet with GUI in Java

This is actually a series of assignments which had the students build a spreadsheet with formula evaluation. It has been used several times in the Data Structures class.

C/LC3 Assembly Language Assignments

These assignments were written for CS270. This course combines C programming, hardware (gates and circuits) and LC3 assembly language. It is taught using the book A Introduction To Computing Systems by Patt and Patel. At CSU, this course is taken at the sophomore level and students have experience with Java programming. Therefore, the C programs are designed to emphasize features they have not likely seen in Java. Students are expected to be able to write programs with declarations, loops, conditionals, methods, etc. that are implemented in multiple files.

Each assignment includes a driver test program, header file(s) containing the documentation of the functions they need to write and a skeleton of a .c file that the student must complete.


Operating System Assignments

These Java assignments are designed to illustrate some of the interesting topics in operating system in a language that has concurrency build in. The first two assignments deal with race conditions and synchronizing access to shared data structures. The next assignments build a simple operating system and file system and build on the concurrency concepts from the first two assignments.
(c) Fritz Sieker 2015 (fsieker AT cs.colostate.edu)