assignments
1. getting started
due Thu Jan 25
Do two problems from advent of code. If you can, use two different program languages run two different ways. Explain your approach and what tools you used. Be ready to discuss in class.
2. more advent of code
due Thu Feb 1
Do another two problems from advent of code or project euler . Submit both your code and the results of running it. As discussed in class,
- Split your work into testable functions.
- Make sure that the examples given in the adventofcode descriptions work.
3. piglatin - group project 1
due Thu Feb 8
Working with the others in your group, design and implement an industrial strength piglatin text conversion utility, which you will present in class. Include
- A specification of what your utility does.
- Documentation on how to install and use it.
- Test cases and examples.
I also want you to think of this effort as an exercise in project management, so be thinking about how you're making decisions, how you're sharing the work, and what software tools you're choosing to use.
4. managing groups
due Mon Feb 12
Read up on software development and project management methodologies. Wikipedia's Software Development page is a reasonable place to start - following the links and choose some topics to explore - as well as the others on the resources page.
- Come to class on Monday ready to explain at least one topic.
- ... more coming for Thursday.
5. the piglatin web
due Mon Feb 26
- In a two week group project, design and implement a tool that will let you browse web pages which have been in converted to pig latin. Clicking on a link should bring you to another piglatin page.
- Two groups: Merlin, Barbora Nate ; Jack, Jimmy N.
- I suggest a FireFox browser extension which converts page's text pig latin.
- At a minimum, have it work on these simple web pages.
- Your deliverable should be one short paper with three of you as authors, including what you did, how you did it, code, docs, screenshots, tests, references, and a discussion of how you managed to project.
6. open source
due Mon Mar 26
- In the two weeks before spring break, explore some open sources projects with an eye towards contributing something to one of them.
- There is a list of resources on getting involved involved with open source in my Feb 26 notes - a good start would be to look there.
- Come to class on March 1, 5, and 8 ready to share what you have read and what you've learned.
- You may do this either individually or in groups of two people.
- The deliverable, due at our first meeting after spring break, should be a description of your experience and what you accomplished, including enough links to specifics that someone else could follow in your in your footsteps.
7. blockchain
due Thu Apr 5
- We're reading a practical introduction to blockchain with python and discussing it in class.
- In python 2, sha256 can be found with "import hashlib; hashlib.sha256("Put your string here.").hexdigest(). Given an arbitrary string, find a number (a "nonce") that can be put on the end of that string to make the sha256 hash start with four zeros.
- With any tool you like (openssl at the unix command line or python 2's Crypto module or other), explicitly implement the RSA public/private encrypt + sign algorithm that we've discussed. In other words (a) create two public/private RSA key pairs, one for Alice and one for Bob. Pretend that Alice wants to send a signed message to Bob i.e. encrypt_bob_public(encrypt_alice_private(message)) and show and explain that only Bob can read this, and that he knows that only Alice could have sent it.
8. word counts
due Mon Apr 9
- We're going to look at some of the "Exercises in Style"
- For Monday, implement in any language you like the word frequency problem as described in the code/style_exercise folder. Be ready to discuss your code and approach.
9. style analysis
due Thu Apr 19
- Browse through the book "Exercises in Programming Style", on reserve in the library, and the code in its github repo.
- Submit a discussion and explanation of one of these styles.
10. final project presentation
due Mon Apr 30
- Present in class a coding project of your choice, in a language of your choice.
- Some possibilities:
11. final project submission
due Fri May 4
- Submit your written final project.
- Include code, documentation, an example of running it, references, and a brief discussion.
12. term grade
due Tue May 8
- a place for Jim to record semester feedback.