* CSCI 352 Assignments, Spring 2018

CSCI 352: Software Engineering
Spring 2018

Course Assignments


Homework 1: Drawing a Picture (Developing a Use Case) and Reading

Assigned: 1/11
Due: 1/16 by email before the start of class

Using the paint program on any Windows machine, draw a picture.
It does not need to be a masterpiece, try to aim for 1st grade level drawings (stick figures are encouraged). Make sure to:

  • Use different colors (at least 2)
  • Use different tools (at least 3)
  • Document!
    • Take note of everything you do
    • Track color/tool changes
    • What steps did you take to complete your drawing?
In addition to this, read chapter 1.2 Software Entropy from The Pragmatic Programmer.
In a file separate from your painting instructions, answer these questions:
  • What do broken windows have to do with code?
  • What software do you use with "broken windows"?
    • What is this software?
    • What are (some of) the "broken windows"?
    • In your opinion, why are these windows still broken?

What to turn in:
  • Your picture
  • Picture documentation (pdf)
    • A sentence describing the picture
    • Your detailed steps that you took to create the picture
  • Reading Responses (pdf)

Homework 2: Readings

Assigned: 1/18
Due: 1/25 by email before the start of class

Read chapter 1.4 Good-Enough Software from The Pragmatic Programmer, and answer the second challenge:

Consider the effect of modularization on the delivery of software. Will it take more or less time to get a monolithic block of software to the required quality compared with a system designed in modules? Can you find commercial examples?
Be sure to explain your reasoning for the first part, and give at least one specific commercial example.

Next, read chapter 2.10 Tracer Bullets from The Pragmatic Programmer and answer the following:

  1. In your own words, explain the difference between a prototype and tracer code. Which one are you more likely to hand over to a client to play with? Defend your answer
  2. Imagine you are creating a ride-share application (feel free to use Uber/Lyft/etc. as inspiration). Give an example of:
    • A prototype you might develop along the way. What makes it a prototype (as opposed to tracer code/anything else)? (feel free to use your definitions from above) Defend your answer.
    • Tracer code you might develop along the way. What makes this tracer code (as opposed to a prototype/anything else)? (feel free to use your definitions from above) Defend your answer.
  3. Do you believe you will be more likely to see tracers in monolithic code, modular code, or about the same? Defend your answer.

What to turn in:
  • Your reading responses (pdf)


Classwork 1: Tie your Shoes

Assigned: 1/11
Due: 1/11

Programming Assignments

Programming Assignment 1: Welcome C#

Assigned: 1/11
Due: 1/23 by email before the start of class

For this assignment you will be developing a console application in C#. This assignment is designed to help us transition from C++ to C#. Your program will need the following:

  • an abstract Pet class. This will define what attributes a pet will have. Minimally: pets should have a private Name, as well as a private Species. Pets should also have Play, Speak, and Eat functions (that will be overridden). These should all be public.
  • a concrete Dog class. Minimally it will need to override all abstract pet functions.
  • a concrete Cat class. Minimally it will need to override all abstract pet functions.
  • a concrete class of your choice that inherits from Pet (have some fun with it!). Minimally it will need to override all abstract pet functions.
  • a main driver. This will be the entry point to your program. It will declare a List of Pets, and have a menu-driven interface that minimally allows you to add pets, interact with individual pets, and exit the program. Feel free to implement more functionality if you desire.
What to turn in:
  • A zip file containing:
    • All of the source code needed to run your pet management program
    • A README documenting all of your design decisions, as well as how to run your program.

Group Project Deliverables

Group Deliverable 1: Teams

Assigned: 1/11
Due: 1/18

Let me know via email (each team member email please, so I know no one got volunteered) who you plan to work with for the course project. I am ideally looking for teams of 2.

Group Deliverable 2: Project proposal draft

Assigned: 1/11
Due: 1/30

This assignment has 2 parts:

  1. This is your first draft of your group project proposal. The more thorough this version of proposal is, the less work you will have to do for the next deliverable. In this document you need to convince me that a: this is a worthwhile project, and will make an appropriate semester-long goal, and b: this is not too ambitious of a project and you will be able to complete it within the semester.
  2. Create a github repo for the project (make sure you have a placeholder C# project in it from Visual Studio!), and make sure your proposal is added to your repo by the due date.

You can find a starter project file here: 352 Project Starter. This is a LaTeX file, and you should be able to just start typing your own words into the provided sections.

For this Deliverable, I expect to see (minimally) the following:

  • A name for the project
  • The names of everyone working on the project
  • An abstract
  • The introduction (aim for 2 paragraphs introducing the project, don't forget to describe your target audience!)
    • Including both Background and Challenges, to the best of your capabilities
  • Scope: Just get the first part under section 2 filled in (2.1 can be ignored at this point). Give me an idea of what point you feel you would need to reach to consider the project "done".
    • Include at least 2 "stretch goals", things that would be cool to add to the project.

The goal of this assignment is to start a "living document" that will help you stay on track with your project for the rest of the semester. Anything you do past this point will simply make your life easier for the next deliverable! Let me know if you would like feedback on any additional sections!

What to turn in:
  • Nothing! Make sure you share your github repo is shared with me, and that you have uploaded either a pdf or all files needed to generate your proposal document (or both!)