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:
- Design, implement, and test programs which use object-oriented language features of inheritance, abstract classes, interfaces, and polymorphism;
- Employ the phases of the software development life cycle (requirements, design, implementation, and test) in developing software;
- Use UML class diagrams to propose a design to satisfy requirements;
- Use design patterns (e.g., model-view-controller and the state pattern) to solve development problems;
- Design effective system and unit tests and implement automated unit test code;
- Navigate and extract information from the Java API, and employ the Javadoc tool to construct internal documentation of source code;
- 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.
- Design, implement, and test a finite state machine;
- Design, implement, and test simple recursive data structures;
- 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