Skip to main content

CSC 217 – Software Development Fundamentals Lab

Catalog Description:

Laboratory course to accompany CSC 216 lecture course. Application of the software processes and practices to design, implement, and test the development of software solutions requiring composition; inheritance; finite state machines; and linear data structures, including recursive linked lists.

Contact Hours:

  • Lab: 2 hours

Prerequisites: CSC 116 with a C or better
Co-requisites: CSC 216
Restrictions: None
Coordinator: Dr. Sarah Heckman
Textbook: None

Course Outcomes:

  1. Design, implement, and test programs which use object-oriented language features of inheritance, abstract classes, interfaces, and polymorphism;
  2. Employ the phases of the software development life cycle (requirements, design, implementation, and test) in developing software;
  3. Use UML class diagrams to propose a design to satisfy requirements;
  4. Use design patterns (e.g., model-view-controller and the state pattern) to solve development problems;
  5. Design effective system and unit tests and implement automated unit test code;
  6. Navigate and extract information from the Java API, and employ the Javadoc tool to construct internal documentation of source code;
  7. Use software engineering best practices like pair programming, test-driven development, code coverage, static analysis, version control, continuous integration, and documentation with supporting tooling to design, implement, and test object-oriented systems.
  8. Design, implement, and test a finite state machine;
  9. Design, implement, and test simple recursive data structures;
  10. Implement, test, and use a stack, queue, array-based list, and linked list.

Topics:

  • Lab 0 – Installation and Pair Programming
  • Lab 1 – Project Creation
  • Lab 2 – Verification and Validation Best Practices
  • Lab 3 – Collections
  • Lab 4 – Design
  • Lab 5 – Debugging
  • Lab 6 – Finite State Machines
  • Lab 7 – ArrayLists
  • Lab 8 – LinkedLists
  • Lab 9 – Stacks and Queues
  • Lab 10 – Iterators
  • Lab 11 – Recursion and Lists