CSCE 5420: Software Development - Fall 2011

Instructor: Paul Tarau, Associate Professor, Teaching Assistant: Shanti Thiyagaraja – link to grading information



Description: An advanced software development course, with emphasis on techniques to develop reliable, mission critical software by using a combination of formal specification tools and state of the art development environments. Project and team work based, the course will provide hands-on experience with a complete software development cycle, including testing, deployment and maintenance.


Prerequisites: Undergraduate software engineering/software design course.

Textbook: no official text book - we will make heavy use of various online resources


Resources: (watch for new items in the  course directory).

Final Project: due Wed Nov. 30 at noon

Convert the Java code at to equivalent Scala code and create a similar open source git repository at Google Code, that you will also use as a version control system for managing team work. Details on the distribution of modules  will be discussed in class. Using an agile software development methodology is strongly recommended. Git comes installed with typical Linux and Mac OS and on Windows this open source implementation works quite well. The following roles will be available to various teams:

1)      git site manager/integrator/tester

2)      develop package “terms”

3)      develop package “fluent”

4)      develop package “io”

5)      develop package “built-ins”

Assignment 1: due Oct 5 at noon

Redo the benchmark in package ArrayOps shown in class using Scala’s List package. Also implement QuickSort with the List representation.

Assignment 2: due Wed Oct 26 at noon

Push at least one of the files assigned to your team ported from Java to Scala to the git site at at . Unless you already did it, as part of the evaluation for this assignment, please notify the grader about the composition of your team, the module you are working on, and provide at least one google id to her to ensure you are authorized as a committer for the project.

Assignment 3: due Wed Nov 23 at noon

Design and implement in Scala an emulation of a simple control system for a shower that allows you to set a desired water temperature.

Assignment 4: due Wed Nov 30 at noon

Write a small Scala program using 2 Actors that handle messages using the react method, which emulates a simple Ping-Pong game. The ball can be in or out and the one that misses 5 times, loses. Chance is emulated with a random variable local to each Actor. We assume that actors are honest and count there misses locally.