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: 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.


See Course Listings

See Course Coordinators