Programming
Workshop

Spring 2014
course
navigation

project discussion

aside

have liberal arts, will code (wall street journal) discussion

tron grades

While I think that the individual and team tron tourneys were good learning experiences, both in coding, debugging, and project management, I have had a hard time giving letter grades to your work. Team effort in general make individual grade assignments challenging, and the wide range of your backgrounds and experience has made a single rubric feel problematic.
So I decided to keep things simple. You'll find feedback for the team, some comments on your individual work, and the same grade for everyone who was on a team. If the letter grade is important to you and you'd like to make an argument for a different one, do so in this week's assignment.

final projects

I will speak with you each individually about your project for the second half of the semester.
The grading categories for the project look like this :
For next week, I'd like a proposal, including resources (compilers, tutorials, etc) and a rough schedule.
Be ready to do a "here are my first steps" presentation next week.

Too thin a proposal.

I'm going to write a 2048 game in python.

I want instead something like this.

For my coding project I'm going to write a 2048 game in Python, along with a graphical interface using Zelle's graphics and with some sort of computer player. The game itself can be see at http://gabrielecirulli.github.io/2048/ along with its code at https://github.com/gabrielecirulli/2048 There are currently many versions of this floating around the internet, including hexagonal ones http://baiqiang.github.io/2048-hexagon/ After each move, the tiles slide to one side of the board, and a new random tile is added. As seen in the addRandomTile function at https://github.com/gabrielecirulli/2048/blob/master/js/game_manager.js the odds are 9/10 of getting a "2" for a new tile, and 1/10 of getting a "4". The place where the new tile is placed is chosen randomly from the empty spaces. I will create a github repository to hold the code, and use Python 2.7 as installed on csmarlboro.org. My first version will simply implement the game mechanics, with tests, and will work with standard input and input, with the user typing for example "e <return>" to slide all the tiles to the right (east). With that's in place, the next step will be a graphical version that builds on it, using Zelle's graphics module http://mcsp.wartburg.edu/zelle/python/graphics/graphics/index.html which we used in the Intro Python course last term. Finally, I'll explore algorithms for a computer player. There's a discussion of AI algorithms for this game at https://news.ycombinator.com/item?id=7379821 I'll probably start with an expectimax algorithm as described at http://en.wikipedia.org/wiki/Expectiminimax_tree The schedule I have in mind is Apr 8 matrix data representation and move API with tests 15 clickable user interface with graphics 22 some sort of computer player (we'll see) 29 testing and docs May 6 class presentation

languages and technologies

A number of folks have expressed an interest in exploring a new language as part of their project. That's fine, but as I have said, I want you to choose a specific task to accomplish in that language, not just "learn language X".
If you can't think of one, maybe you could try
The languages that folks have talked about include
... which will have nearly everyone heading in different directions. That means you all need to be exceptionally clear when sharing your work weekly and describing what is and isn't working with people who aren't familiar with the language and/or development environment you're using.
I would really like to see all projects managed under something like github system, so that I (and others) can see the schedule of changes and view the code from a browser. If you can find a way to simulate or deploy in the cloud too, that would be excellent ... though that will depend on your specifics.
Depending on the time remaining today, I would like to start to look at something along the lines of a "hello world" program - perhaps the pythagorean triplet from http://projecteuler.net/problem=9 - for each of the languages / environments we're talking about, or at least the ones that we can get up and running on csmarlboro.
Googling will find examples of this problem in many of the languages we're discussing.
On cs.marlboro.edu :
$ gcc foo.c -o foo ; ./foo # compile & run C code $ ghc foo.hs -o foo ; ./foo # compile & run Haskell code $ python foo.py # compile & run Python $ node foo.js # (command line) compile & run JavaScript $ javac Foo.java ; java Foo # Java (assuming Foo.java contains "class Foo") $ go run foo.go # Go (but typically has various expected folders)
In class we set up a github repository and worked euler 9 in python and C :
Random notes:
http://cs.marlboro.edu/ courses/ spring2014/workshop/ notes/ project_discussion
last modified Tuesday April 1 2014 12:56 pm EDT