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
- (M) PA1: warmup with some "balancing" problems, like checking parenthesis
- (E) PA2: Game of 15. Basic interaction with other people's code / libraries
- (E) PA3: leaky abstractions, string injection, and timing attacks
- (M) PA4: Statistics. Covers interfaces, abstract classes, and mathematical reductions and mappings
- (H) PA5: Routing. Use
Map
andList
to represent a graph and execute common graph algorithms on them. - (E) PA6: make a word cloud of tweets from Twitter using the Twitter API
- (M) PA7: make a very basic question-answering system using "is-a" relations
- (M) PA8: learn data compression techniques (APIs, data manipulation) competitively
- (E) PA9: model a library system using object oriented approaches and save the resulting representation to JSON.
- (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
Cosi12b Assignments by Ryan Marcus is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.