Projects
The course project will be done in teams of 3 people. The teams you will analyze, design and partially implement in Scala a simple information system for a video rental store. Projet deliveries include analysis and design documents, as well the source code of the system implementation.
For the programming aspects of the project it will beneficial to adopt pair programming techniques were all member of the team rotate in taking the pair programming roles. The same techniques could be beneficial during the writing of other project deliverables, such as UML diagrams. Check the resources below for more information on pair programming.
Pair Programming
- Rules for effective pair programming.
- A pair programming worksheet, accompanying to the video below.
- A tutorial video (mov | wmv) from this site.
Teams
Bart Brown
Michael Richards Yi Zhou |
Logan Butler
Brandon Capper Akshay Yadav |
Jonathan Conway
Zhecheng Ding Aaron Shaw |
||
Jacob Alaya
Adam Parro John Sekellaris |
Christian Baldus
Jacob Cassens Erica Silver |
Tony Andrys
Brian Fox Andrew Noel |
||
Berndon Bigelow
Will Gries Charles Okpala |
Jingting Fu
Judah Walker Jian Wang |
Asya Bergal
Kyle Nolan Paul Yon |
||
Jeans Deschamps
Brenna Faler Anna Swinehart |
Junyang Cheng
King Chueng Jae Hyung Kim |
Eric Hickman
Thomas (Kenny) LeHew Joseph Peppers |
||
Michael Nagy
Colin Nickeson Alic Szecsei |
Steven Danielson
Mitchel Meyer Justin Okamoto |
Danan Flander
Shusho Shi William Tumey |
||
Eric Burns
Jennifer Clendineng Wyatt Kaiser |
Matt Azamczyk
David Campbell Aaron Masover |
Joo Yo Chang
Pranav Herur David Maslowski |
||
Cody Childs
Vince McAlpine Taylorel Stutts |
Jorge Cividanes
Ryan Denny Thomas Knudson |
Colten Duccini
Tingting Gao |
||
Grant Lindburg
Robert Rinderknecht Chris Stewart |
Jesse Johnson
Steven Mayner Renesa Smith-Taylor |
Yue Jing
Ziying Liu Jiaji Sun |
||
Cameron Loushin
Ryan Meagher Hakim Tatah |
Chase Reed
Nicholas Schwarzentraub Daria Tan |
Mark Snyder
Nathan Thackery Joseph Volker |
Sample Code
The SBT project provided on ICON contains a few sample Scala modules for components you will need in your implementation.
The file PersistentTables.scala contains sample code on how to implement relational database-style tables which can be individually saved to and loaded from disk in text format. You can adapt and extend the sample classes there to store persistent information about customers, movie titles, game titles, rentals and so on.
The file Main.scala defines the main singleton class of the system. It is called GUI and is a subclass of SimpleSwingApplication, a predefined class of Scala's Swing library. That library, which is built on the Java Swing framework, allows one to build graphical user interfaces in Scala. Object GUI builds the main window of the GUI and defines several components in it.
One of them, a window pane that shows customer information, is contructed in another class, CustomersUI, defined in file CustomersUI.scala. That class contains further sample code on how to show customer information in the GUI and how to associate actions to GUI components like buttons, menus, editable text fields and so on. Most of the actions defined in Main.scala and in CustomersUI currently have a dummy body: they print some text on the standard output terminal. You will have to replace them to calls to your own code performing real actions.
We will go over Scala Swing and few examples of its uses in class. In the meantime, you can find initial information in Chapter 34 of the Scala textbook, and details information in documenation of the Scala Swing library.