Programming assignments suitable for 2nd semester undergraduates
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
PA1 (Balancing Act)
PA10 (Compilation and Interpretation)
PA2 (Game of 15)
PA3 (Injection + Timing)
PA4 (Stats)
PA5 (Routing)
PA6 (Twitter)
PA7 (Ontology)
PA8 (Compression)
PA9 (Domain modeling)

Brandeis Uniersity COSI 12b Assignments

This repository contains Java programming assignments suitable for second semester undergraduate computer science students. Each problem (except the Twitter problem) comes with a set of unit tests that have fairly good coverege of possible errors. It is recommened that instructors release these unit tests to students and invent another, hidden set of tests to ensure that students do not over-fit the given tests.

Assignment listing (E)asy, (M)edium, (H)ard

  1. (M) PA1: warmup with some "balancing" problems, like checking parenthesis
  2. (E) PA2: Game of 15. Basic interaction with other people's code / libraries
  3. (E) PA3: leaky abstractions, string injection, and timing attacks
  4. (M) PA4: Statistics. Covers interfaces, abstract classes, and mathematical reductions and mappings
  5. (H) PA5: Routing. Use Map and List to represent a graph and execute common graph algorithms on them.
  6. (E) PA6: make a word cloud of tweets from Twitter using the Twitter API
  7. (M) PA7: make a very basic question-answering system using "is-a" relations
  8. (M) PA8: learn data compression techniques (APIs, data manipulation) competitively
  9. (E) PA9: model a library system using object oriented approaches and save the resulting representation to JSON.
  10. (H) PA10: compilation and interpretation. Build an interpreter and a compiler for a simple arithmetic expression language

This order is the order that assignments were given out in Spring 2016 at Brandeis. It would probably make sense to swap PA7 and PA5, as PA5 was a bit more difficult.

To "compile" any given assignment, just run make in the appropriate directory. This requires Pandoc.

Terms and Conditions

Creative Commons License
Cosi12b Assignments by Ryan Marcus is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.