CSC 216 Credit by Exam
CSC 216 is a second semester programming course for Computer Science majors and minors at NC State University. Emphasis is placed on software system design and testing; encapsulation; polymorphism; composition; inheritance; linear data structures; specification and implementation of finite-state machines; interpretation of inductive definitions (functions and data types); and resource management.
The learning outcomes are:
-
Describe the utility of inheritance, abstract classes, interfaces, and polymorphism in object-oriented systems, and design, implement, and test programs which use these language features;
-
Identify the phases of a simple model of the software life cycle, and employ these phases in developing software;
-
Describe basic design modeling techniques, including UML class diagrams and simple design patterns (e.g., model/view/controller), and indicate how and when to use them;
-
Identify and compare the basic kinds of software testing, describe when to use each method, and design and implement 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;
-
Identify when recursion is useful, and design, implement, and test recursive algorithms and simple recursive data structures;
-
Implement, test, and use a stack, queue, array-based list, and linked list.
The CSC 216 Credit by Exam process evaluates the learning outcomes in a 4-part process: three guided programming activities and a written comprehensive exam. The guided programming activities assess practical programming skills and introduce you to the technologies and software engineering skills you are expected to know in subsequent Computer Science course work.
NOTE: CSC 217, the lab course associated with CSC 216, has a separate CBE process.
Covered Topics
The following topics are covered on the CSC216 Credit by Exam. We have provided links to course lecture notes to help you study for the exam.
- OO Review
- Testing and Debugging
- Coverage and Static Analysis
- Java Collections
- Inheritance and Polymorphism
- Abstract Classes and Interfaces
- Exceptions and Libraries
- Design and Model-View-Controller
- Software Lifecycle and Task Planning
- Finite State Machines
- Finite State Machines and the State Pattern
- Array-based Lists
- Generic Array Lists
- Linked Nodes
- Linked Lists
- Complexity
- Stacks
- Queues
- Inner Classes and Iterators
- Recursion
- Recursive Lists
Recommended Textbook and Resources
Reges and Stepp, Building Java Programs, 4th edition
The textbook website (http://www.buildingjavaprograms.com/) provides valuable resources including lecture slides that may be used to study for the exam. Additionally, the Practice-It section provides an electronic environment for practicing coding with feedback on correct/incorrect code. Many of the problems at the end of the text book chapters are available in the Practice-It tool.
Building Java Programs chapters covered in CSC 216:
- Procedural Programming Review (including if/for/while control structures): Chapters 1-7
- Object-Oriented Programming Review: Chapter 8
- Inheritance and Interfaces: Chapter 9
- ArrayLists: Chapter 10
- Java Collections Framework: Chapter 11
- Recursion: Chapter 12
- Stacks and Queues: Chapter 14
- Implementing ArrayLists: Chapter 15
- Implementing LinkedLists: Chapter 16
You will also want to refer to the following course packs and websites to supplement the course text book:
- Software Lifecycle
- Software Design
- Class Diagrams
- Software Testing Course Pack
- Finite-State Machines
You may use other textbooks to study for the exam.
Credit by Exam Structure
The CSC 216 Credit by Exam process will take three to four weeks to complete. You must start the exam with enough time to complete the process before the start of the semester you want the exam counted in. Please work with the Undergraduate Advising office to identify when you must start the exam process. The exam process and evaluation will be overseen by the CSC 216 Course Coordinator with the assistance of the Undergraduate Advising office.
Links to the guided projects, GitHub and Jenkins information, and exact due dates will be emailed for each person taking the Credit by Exam.
- Credit by Exam Setup: Setup and familiarize yourself with the CSC216 development environment.
- Guided Project 1: One week from day assigned.
- Guided Project 2: Four days from day assigned.
- Guided Project 3: Three days from day assigned.
- Written Examination: By the end of the three week period from the day Guided Project 1 was assigned. The exam will be proctored by the Undergraduate Advising office
NOTE: The Guided Projects are also used in the CSC 216 course. Students completing the Credit by Exam process do NOT have a late deadline. The exact due date emailed is the final deadline - there is no late window.
Credit by Exam Setup
The Guided Projects provide a review of advanced object-oriented programming concepts, unit testing, and course technologies. Before starting the Guided Projects, you must set up the CSC216 Development Environment as described in the CSC216 Environment Setup Guide.
Additionally, you should familiarize yourself with GitHub using the CSC Git Guide.
Finally, you should familiarize yourself with the continuous integration system Jenkins, which we use for automated grading.
These tasks must be completed before starting the Credit by Exam process.
Guided Projects
The link to the Guided Projects will be provided one at a time. The projects build, so you must successfully complete one project to be successful on future projects.
You will be provided all of the resources that you need to complete the Guided Project including an NCSU GitHub repository and a Jenkins job for evaluating your work. Please note that because you are completing the Credit by Exam process, your resources may have slightly different names and links than those mentioned in the Guided Projects. If you have questions, you can email the CSC216 Course Coordinator for clarification.
You must earn a 70% or higher on a Guided Project to move on to the next Credit by Exam task.
Portions of the Guided Projects are automatically graded, but manual grading is required for some aspects of the projects as outlined in the project rubrics.
NOTE: The Guided Projects are also used in the CSC 216 course. Students completing the Credit by Exam process do NOT have a late deadline. The exact due date emailed is the final deadline - there is no late window.
Written Examination
The following rules apply for the written examination:
- The written exam must be completed in 3 hours.
- The written exam is closed book and closed note.
- The written examination will be administered via Moodle. You will be given a window of time to complete the written exam. Once you start the exam, in that window, you will have three hours to complete the exam. If you start the exam less than three hours before the end of the window, you will only have the time until the end of the window.
- You may be asked to write code and complete programs, construct diagrams (e.g. class diagrams or finite state machines), and answer multiple choice and short answer questions. The code that you write is expected to compile and run; mistakes that would cause your code to not compile or run incorrectly will results in a loss of points.
You must earn a 70 or higher on the exam to receive credit for CSC 216.
CSC 216 Course Coordinator
The contact information for the CSC 216 Course Coordinator is below. Note that approval by the CSC Undergraduate Advising office is required before starting the CSC216 Credit by Exam process.
1
2
3
4
Dr. Sarah Heckman
Teaching Professor
Director of Undergraduate Programs
[email protected]
