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
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
See Course Listings