Preview Workflow

Viewing: CSC 216 : Programming Concepts - Java

Last approved: Wed, 01 Jun 2016 08:19:09 GMT

Last edit: Wed, 01 Jun 2016 08:19:09 GMT

Catalog Pages referencing this course
Change Type
Major
CSC (Computer Science)
216
004362
Dual-Level Course
Cross-listed Course
No
Programming Concepts - Java
Programming Concepts - Java
College of Engineering
Computer Science (14CSC)
Term Offering
Fall, Spring and Summer
Offered Every Year
Fall 2016
Previously taught as Special Topics?
No
 
Course Delivery
Face-to-Face (On Campus)
Distance Education (DELTA)

Grading Method
Graded with S/U option
4
15
Contact Hours
(Per Week)
Component TypeContact Hours
Lecture3
Laboratory2
Course Attribute(s)


If your course includes any of the following competencies, check all that apply.
University Competencies

Course Is Repeatable for Credit
No
 
 
Sarah Heckman
Teaching Associate Professor

Open when course_delivery = campus OR course_delivery = blended OR course_delivery = flip
Enrollment ComponentPer SemesterPer SectionMultiple Sections?Comments
Lecture and Lab18090YesN/A
Open when course_delivery = distance OR course_delivery = online OR course_delivery = remote
Delivery FormatPer SemesterPer SectionMultiple Sections?Comments
LLB5050NoN/A
Prerequisite: CSC 116 with a grade of C or better
Is the course required or an elective for a Curriculum?
No
The second course in computing, intended for majors. 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.

CSC216 is a critical course in the CSC undergraduate curriculum.  Students struggle with the materials and have requested additional practice in class.  As a large lecture class, we can incorporate more practice, but we lose the more personal interactions with students.  To help students succeed in CSC216 and courses further in the CSC curriculum we are proposing adding a lab section, which will increase the number of credit hours to 4.


The addition of the lab will provide more time for students to work on programming practice and the increase to 4 credit hours will demonstrate to students the importance of the course in our curriculum.  We expect that student learning will increase through more practice and that more students will complete the course on their first attempt.  Additionally, we believe the lab will help retain women and other underrepresented groups in the CSC major through additional support and practice.


The catalog description and course learning outcomes have been updated to reflect the changes in the course and the increased emphasis on software engineering skills and supporting tooling.  


The update of CSC216 is supported by a 2015-2016 DELTA Course Redesign Grant (PI Sarah Heckman).  


No

Is this a GEP Course?
No
GEP Categories

Humanities Open when gep_category = HUM
Each course in the Humanities category of the General Education Program will provide instruction and guidance that help students to:
 
 

 
 

 
 

 
 

 
 

 
 

Mathematical Sciences Open when gep_category = MATH
Each course in the Mathematial Sciences category of the General Education Program will provide instruction and guidance that help students to:
 
 

 
 

 
 

 
 

Natural Sciences Open when gep_category = NATSCI
Each course in the Natural Sciences category of the General Education Program will provide instruction and guidance that help students to:
 
 

 
 

 
 

 
 

Social Sciences Open when gep_category = SOCSCI
Each course in the Social Sciences category of the General Education Program will provide instruction and guidance that help students to:
 
 

 
 

 
 

 
 

 
 

 
 

Interdisciplinary Perspectives Open when gep_category = INTERDISC
Each course in the Interdisciplinary Perspectives category of the General Education Program will provide instruction and guidance that help students to:
 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

Visual & Performing Arts Open when gep_category = VPA
Each course in the Visual and Performing Arts category of the General Education Program will provide instruction and guidance that help students to:
 
 

 
 

 
 

 
 

 
 

 
 

Health and Exercise Studies Open when gep_category = HES
Each course in the Health and Exercise Studies category of the General Education Program will provide instruction and guidance that help students to:
 
 

 
 

 
 

 
 

 
&
 

 
 

 
 

 
 

Global Knowledge Open when gep_category = GLOBAL
Each course in the Global Knowledge category of the General Education Program will provide instruction and guidance that help students to achieve objective #1 plus at least one of objectives 2, 3, and 4:
 
 

 
 

 
Please complete at least 1 of the following student objectives.
 

 
 

 
 

 
 

 
 

 
 

US Diversity Open when gep_category = USDIV
Each course in the US Diversity category of the General Education Program will provide instruction and guidance that help students to achieve at least 2 of the following objectives:
Please complete at least 2 of the following student objectives.
 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

Requisites and Scheduling
 
a. If seats are restricted, describe the restrictions being applied.
 

 
b. Is this restriction listed in the course catalog description for the course?
 

 
List all course pre-requisites, co-requisites, and restrictive statements (ex: Jr standing; Chemistry majors only). If none, state none.
 

 
List any discipline specific background or skills that a student is expected to have prior to taking this course. If none, state none. (ex: ability to analyze historical text; prepare a lesson plan)
 

Additional Information
Complete the following 3 questions or attach a syllabus that includes this information. If a 400-level or dual level course, a syllabus is required.
 
Title and author of any required text or publications.
 

 
Major topics to be covered and required readings including laboratory and studio topics.
 

 
List any required field trips, out of class activities, and/or guest speakers.
 

CSC216 is a core course that will count as one course in faculty load. The addition of the laboratory component will require space to hold eight or nine laboratory sections each semester, which will be taught by TAs. We have space and availability in Engineering Building II, 1221.

Student Learning Outcomes

Upon successful completion of this course, a student will be able to...



  1. 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;

  2. Identify the phases of a simple model of the software life cycle, and employ these phases in developing software;

  3. 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;

  4. Identify and compare the basic kinds of software testing, describe when to use each method, and design and implement test code;

  5. Navigate and extract information from the Java API, and employ the Javadoc tool to construct internal documentation of source code;

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

  7. Design, implement, and test a finite state machine;

  8. Identify when recursion is useful, and design, implement, and test recursive algorithms and simple recursive data structures;

  9. Implement, test, and use a stack, queue, array-based list, and linked list.


Evaluation MethodWeighting/Points for EachDetails
Project40There are three projects. Each project consists of 2 parts. Part 1 is a design and black box test planning phase. Part 2 is an implementation and testing phase.
Part 1 of a project is worth 20% of the project grade. Part 2 of a project is worth 80% of the project grade. Therefore, if a student receives an 87 on Part 1 of a project and a 93 on Part 2 of the project, the student's grade for the project is:
(87 * .2) + (93 * .8) = 17.4 + 74.4 = 91.8
The lowest project grade is 20% of the overall project grade. The other two project grades are each worth 40% of the overall project grade. Therefore, if a student receives a 73 on Project 1, a 56 on Project 2, and a 95 on Project 3, the student's overall project grade is:
(73 * .4) + (56 * .2) + (95 * .4) = 29.2 + 11.2 + 38 = 78.4
All Part 1s will be completed individually. For Part 2, Projects 1 and 2 will be completed individually or may have optional teams at the instructor's discretion. Project 3 will be completed on a team. You will only be placed on a team for Part 2 of a project if you complete Part 1 for that project.
Project10There will be two Guided Projects that will introduce you to the course technologies and best practices. Portions of the project will be provided through tutorial sections and portions of the project will be completed independently. Each Guided Project is worth 5% of your final grade.
Lab assignments10All labs will have a participation and submission requirement. You will be evaluated on your participation and the quality of the lab deliverable. The lab grade will be the average of your grade for each individual lab. There are 13 labs during the semester.
Exam12Exam 1 will cover material from approximately the first third of the course.
Exam12Exam 2 will cover material from approximately the first two-thirds of the course.
Exam16Exam 3 will cover all materials for the course.
TopicTime Devoted to Each TopicActivity
OO Review and Composition1 lectureOO Review and Composition
Lab 1: InstallFest and Pair Programming1 labTechnology setup and introduction to pair programming.
Software Testing1 lectureSoftware Testing: black box and white box testing
Software Engineering Best Practices1 lectureCode coverage, static analysis, version control, continuous integration, and inspection
Lab 2: Software Testing and Best Practices1 labSoftware testing, code coverage, static analysis, version control, continuous integration, and inspection
Java Collections1 lectureJava Collections Framework
Inheritance and Polymorphism1 lectureAdvanced OO: Inheritance and Polymorphism
Abstract Classes and Interfaces1 lectureAdvanced OO: Abstract Classes and Interfaces
Exceptions and Libraries1 lectureExceptions (checked and unchecked) and 3rd Party Libraries
Lab 3: Collections1 labTesting the Java Collections Framework
Design and Patterns1 lectureSoftware design, UML class diagram, design patterns
Software Lifecycle and Task Planning1 lectureSoftware lifecycle (requirements, design, implementation, and test) and task planning
Lab 4: Design1 labCreation and review of a system design
Finite State Machines1 lectureFinite state machines (concepts and while-switch implementation)
Finite State Machines and the State Pattern1 lectureFinite state machines (object-oriented implementation)
Lab 5: Inspections1 labInspection of requirements, design, and tests from prior labs
Exam 11 lectureEvaluation of the first third of the course
Array Lists 11 lectureArray Lists (concepts and some implementation)
Lab 6: Finite State Machines1 labImplementation of a Finite State Machine in a larger program
Array Lists 21 lectureArray Lists (implementation and generics)
Lab 7: Array Lists1 labImplementation and testing of an array list in a larger program
Linked Lists 11 lectureLinked Lists (concepts and implementation)
Linked Lists 21 lectureLinked Lists (implementation and generics)
Lab 8: Linked Lists1 labImplementation and testing of a linked list in a larger project
Stacks1 lectureStacks (concepts, implementation, and delegation)
Queues1 lectureQueues (concepts, implementation, and delegation)
Lab 9: Stacks and Queues1 labStack and Queues (implementation through delegation as part of a larger project)
Exam 21 lectureEvaluation of the first two-thirds of the course
Iterators and Inner Classes1 lectureList iterators and inner classes
Lab 10: Iterators1 labImplementation of a list iterator as part of a larger project
Recursion1 lectureRecursion (concepts and examples)
Recursion and Lists1 lectureRecursion on linear data structures (concepts and examples)
Lab 11: Recursion and Lists1 labImplementation of a recursive linked list as part of a larger project
GUI View1 lectureGUI View (concepts, components, and layout)
GUI Controller1 lectureGUI Controller (concepts, event model, and event-driven programming)
Lab 12: GUIs1 lab Implementation of a GUI as part of a larger project
Teaming1 lectureIntroduction to collaborating on an independent team
Searching1 lectureSearching (sequential and binary search)
Binary Search Trees1 lectureBinary Search Trees (binary trees, traversal, concepts, and implementation)
Lab 13: Non-linear Data Structures1 labImplementing an binary search tree as part of a larger project
Sorting1 lectureSorting (selection, bubble, insertion, merge, and quick sort algorithms)
Exam Review1 lectureReview course topics for final exam
Edit: Contact hours corrected to 2 (previously 1) for Lab component.
Key: 1309