Dr. Sarah Heckman

Computer Science

Phone: 919-515-2042
Instructor Website

Mr. James Tetterton

Computer Science


CSC 217 601 Software Development Fundamentals Lab

3 Credit Hours

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.

Prerequisite and Corequisite

Prerequisite: Introduction to Programming – Java (NC State CSC 116) with grade of C or higher

Corequisite: Software Development Fundamentals (NC State CSC 216)

Course Objectives

This is a course on the fundamentals of computer science and programming using Java. Students taking this course are expected to have an understanding of loops, conditional logic, objects, classes, file I/O, arrays, and the basics of Java GUIs (swing and/or AWT).

Upon satisfactory completion of this course, you should be able to:

  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.

Course Requirements

Grading and Course Work

Your final grade will be based on the following scheme:

Labs (all labs averaged) 100%

Labs are not accepted late.  The lab assignments build on each other; success on earlier labs is important for success on future labs.  There is also a point where materials from the Guided Projects in the CSC 216 section are integrated into the labs.  If you received credit for CSC 216, you will have the opportunity to create the needed classes for the lab without completing the full Guided Projects.

Textbook Information

The lab materials are posted online.  You may also use the materials in the CSC 216 course to support completion of the lab activities.  Students only enrolled in CSC 217 can request access to the CSC 216 materials.

Note that most introductory Java textbooks provide a convenient source of extra help and reference. Of course, the web is an excellent place to look for help with the Java language and programming practices as well.

Computer and Software Requirements

Code and Submission Tools. You must use Eclipse for project/code development and NC State’s GitHub for submission of your work. Eclipse is an industrial-strength Integrated Development Environment (IDE) that incorporates many of the tools that you will use this semester. GitHub is a web application around Git, which is a version control system. The initial labs have details about using these tools.  You may be asked to use other tools to support design or for a discussion on tradeoffs.  These are explained in the lab write-ups.

Created 10/27/2022