assignments
due Tue Jan 26
getting started
- Describe your previous programming experience :
- What languages have you worked with? For how long? Which do you like best? Why? Any noteworthy projects?
- What tools (editors, compilers, IDE's) are you familiar with? Like best? Why?
- What operating system (windows, mac, linux, ...) do you typically use? Are you comfortable using? Do you ever use a command line interface, and if so, for what?
- Are there any particular projects or areas that you're interested in?
- Using any programming language, solve problem 9 from project euler.net, i.e. find a pythagorean triple whose sum is 1000.
- Solve the same problem in a different language.
due Tue Feb 2
python project euler primes
- Continue to browse through the python docs, connecting its syntax with any languages you already know, and looking at new language features.
- Solve in python at least one of the prime number related problems from project euler, as described in the Fri Jan 21 notes.
- Include at least one class, to practice object oriented programming.
- Do break up the problem into smaller testable pieces.
- Include doc strings and doctest tests.
due Tue Feb 9
python practice or poker research
This week you have one of two choices. I encourage you to work in groups. In any case, come to class ready to share what you did.
- Choice 1: continue to practice python programming.
- Do another (or another several) project euler problems. In my jan 29 notes I list a bunch that continue with the prime number theme.
- As you do so, use the doc and testing conventions we've been discussing.
- And also, use these to explore python class and an object-oriented approach.
- Choice 2: start looking into this poker bot stuff.
- Explore the links on the resources page.
- Questions at this point include:
- What exactly is this poker variant and how does it work?
- How does their protocol work?
- How can we implement a client/server setup in python?
- Can we use one of the existing python poker code bases?
due Wed Feb 16
start Tron bot challenge
- Start reading about the Tron challenge. Download their code package, and start playing around with it.
- Explore into project hosting sites, as described in Tuesday's notes.
- Pick one, set yourself up, and post a link to your project site. Include at least some sort of "version 0.1" code, even if it's only the "random robot" (with source attribution showing where it's from) from the tron bot files.
- Create a preliminary "project proposal" for what you intend to get done on the Tron both challenge before spring break.
due Tue Feb 23
continue Tron bot challenge
- Describe what you've done this week to enhance your bot. Be specific. What comes next?
due Tue Mar 2
two bots
- Turn in code for two bots: a "right hand on the wall" and a "kamikaze" bot.
- Tell me what's working, what isn't, and what you're going to try next.
due Mon Mar 8
tournament 1
- Turn in a bot to fight for glory!
due Thu Mar 11
tournament 2
due Sat Mar 13
midterm project
- Submit a paper describing your work on the tron bot project, including code, trials, debugging, what worked, what didn't, and all of that. Should be about the equivalent effort of a 5 page paper.
due Tue Apr 6
starting eclipse
- Using my march 30 notes, install Eclipse and Jython, explore the docs for both.
- Using those tools, start playing around with some python coding projects from either projecteuler.net or some small GUI apps, using the Jython Demos as starting points.
- Describe you what did and how well it worked.
due Tue Apr 13
practice
- Work either on a graphics app using jython / swing, or on at least one python practice problem.
- Using Eclipse and/or Mercurial is optional.
- Submit your code (in multiple versions if you like), and discuss.
- Here are a few ideas for practice problems. Use at least functions, and perhaps classes. Document, test your code, and give examples of what it does.
- Write a program that reads a file of lines "name:number" and then reports on the name with the highest number, the average and standard deviation of the names.
- Write a program that finds anagrams. Start with single word anagrams. (There's a list of words here: http://cs.marlboro.edu/courses/spring2010/programming/wiki/resources.attachments/words.txt ) Once you have that, move to two word anagrams. You may want to do some 'net research on appropriate algorithms.
- Do problem 14 from projecteuler.net, on the Collatz conjecture. (See http://xkcd.com/710/ )
- Write a program that plays hangman. The file with the list of words (see above) may be helpful; or just build in a few words.
due Tue Apr 20
final project proposal
- Describe what you're doing for your final project.
- And tell me (with some code submissions, please) what you've been up to this week.
due Fri May 7
final project
- Submit a final programming project of your choice.
- Include appropriate documentation - we've discussed this enough that you should know what that means by now.
- Include appropriate tests. Ditto.
- Include screenshots and/or sample input/output sessions.
- And include a short write up describing the process: what you did, whether you're happy with the result or not, how many iterations it went through, what you learned that was new from doing it, etc.
- Be ready to present an overview of your work to the class on the last Fri or Mon.
- Upon request, the due date may be extended until Mon morning - but do let me know if you need more time.
term grade
- A place for Jim to put the overall grade.