CSC207 – Software Design

Project Summary
An introduction to software design and development concepts, methods, and tools using a statically-typed object-oriented programming language such as Java. Topics from: version control, build management, unit testing, refactoring, design patterns, advanced IDE usage, regular expressions, markup languages, parsing using finite state machines, and reflection.

Technologies used:
Python was the main programming language in this course. It is a high-level language that the UofT teaches as a beginner programming language due to its simple semantics and similar syntax to other languages such as Java. Subversion was used as the repository tool, while Eclipse was the IDE used.

Responsibilities/Roles
This course deals with the memory model, version control, unit testing, regular expressions and object oriented paradigms such as reflection. Thus I was required to have a good understanding of those concepts for this course.

Project details
As a final assignment, the professor asked us to program an arcade using Python. Using the arcade, players and games can be added and removed. I decided to program a simple variation of the popular casino game BlackJack. The rules of the game are simple: Each round, a player can hit once, up to three times total. A player can also choose to stay. In the end, the player with the highest combination of cards equal to or less than 21 wins the game. Each card represents its own value, with A being 1 and face cards being 10. The AI will hit every time unless it causes him to bust. A player busts when he/she goes over 21 in total and loses automatically.

Simple implementation of Blackjack
Simple implementation of Blackjack

Source/repos
Github Repo