Course Description from the University Catalog

CS 6241 - Software Development I
Credits: 3.00
This course introduces the software development process while improving programming skills. Topics include object-oriented programming, test-driven development, class design, GUI design and programming, and incremental, iterative development. The coursework assumes that the student has fundamental programming, debugging, and code-interpretation skills in an object-oriented programming language.
Lecture: 2.00 Lab: 2.00
College: College of Arts and Sciences
Department: Computer Science
Pre-requisites: See hard copy catalog for pre-requisites.


Course Information

Course Syllabus
Course Page on the UWG CS Course Web (Moodle)

Course Summary

A number of topics as they relate to software development/engineering were covered in this course.  These include:
  • Object-Oriented Systems
    • Basic Design Patterns
    • The Model-View-Controller Pattern
    • Iterative and Incremental Development (Agile)
    • Interfaces and Inheritance
  • Advanced Classes and Objects
    • Domain Analysis
    • CRC Cards and Modeling
    • UML
      • Class Diagrams
      • Sequence Diagrams
  • Version Control
  • Behavior Driven Development
    • User Stories
  • Test Driven Development
  • State Design Pattern
  • "Anti-Patterns"
  • Life cycle Considerations
Also, several projects were undertaken in the course.  these are:
  • A medium scale project that dealt with creating a tennic scorekeeping program in C# and leveraged the state pattern to do so.
  • A presentation on some topic related to software development/engineering (Scrum)
  • A website on the same topic as the aforementioned presentaion.

Course Assessment

From the syllabus:

This course will help you develop a
  • practical
  • personal
  • process
for developing software.

Practical
  • Useful
  • Pragmatic
  • Applied

Personal
Focused on the skills and practices you need to:
  • develop software independently,
  • be an effective member of a software development team

Process

if (softwareDevelopment != hacking)
{
    aDeveloper.Follow(aDevelopmentProcess)
}
else
{
    aDemon.CreateChaos();
}

Three Overarching Course Themes
  1. The building blocks of software:
    1. Objects
    2. Classes
    3. Interfaces
  2. The characteristics of good software
  3. The practice of software development:
    1. Divide-and-conquer
      1. Process: iterative, incremental development
      2. Purpose: separation of concerns
    2. Behavior-driven development
      1. Domain modeling
      2. Behavioral contracts
      3. Test-first programming
    3. Using software development tools

I believe these goals were effectively met throughout the course. See the class summary for more details.  This class, perhaps more than any other, helped me to find my focus in computer science: software engineering.  I learned a great deal in this course and the subsequent CS 6242 and I have found an area of computer science I truly enjoy and find fascinating.  Dr. Lloyd is the best teacher I have had the opportunity to learn from and anyone who takes computer science classes at UWG would greatly benefit from his knowledge and experience and I have in my time in the master's program.


Back Home