CSC 216 Programming Concepts - Java
 

The second course in computing, intended for computer science majors. Emphasis is placed on interpretation of inductive definitions (functions and data types); testing strategies; specification and implementation of finite-state machine; encapsulation; polymorphism; inheritance; class invariants; and resource management. 3 credit hours

 
   

• Prerequisite
 

A C- or better in CSC116 Introduction to Computing (or equivalent) is a required prerequisite for this course. As a student, you are expected to know and understand the material covered in CSC116, and only a minimal amount of time will be spent on a brief refresh of this information. Calculus I which is offered as MA 141 by the Department of Mathematics at North Carolina State University.


• Course Objectives
 

CSC 216 is the second course in computing, intended for majors and students in the Computer Science Certificate Program. Emphasis is placed on interpretation of inductive definitions (functions and data types); testing strategies; specification and implementation of finite-state machine; encapsulation; polymorphism; inheritance; class invariants; and resource management.

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:

  • describe the utility of inheritance, abstract classes, interfaces, and polymorphism in object-oriented systems, and design and implement programs that 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 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 sourcecode;
  • design and implement a finite state machine;
  • identify when recursion is useful, and design and implement recursive algorithms and class definitions;
  • construct and use a stack, queue, and linked list;
  • construct and use a simple unbalanced binary tree.

• Course Requirements
 

Grading and Course Work

Your final grade will be based on the following scheme:

Work

 Total

Eclipse Tutorial

1%

Debugging Tutorial

2%

JUnit Tutorial

2%

Project 1: Black Box Test Plan, Design Document

2%

Project 1: Solution code and JUnit tests

13%*

Project 2: Black Box Test Plan, Design Document

2%

Project 2: Solution code and JUnit tests

13%*

Project 3: Black Box Test Plan, Design Document

2%

Project 3: Solution code and JUnit tests

13%*

Exam 1

 15%

Exam 2

 15%

Final Exam

20%

* Your lowest Part 2 grade will count half as much as the other two Part 2 grades. That means that the lowest Part 2 grade will contribute 6.5% of your final grade and the other two Part 2 grades will contribute 16.25% apiece.

You cannot make up missed tests or exams without an official university excuse. Furthermore, we will not accept late programming assignments without an official university excuse.

  • Tests and Final Exam: There will be two regular tests during the semester and a final examination.
  • Assignments: There will be three programming assignments this semester. You must submit these programs electronically via: http://submit.ncsu.edu/
  • Attendance: While there is no campus lecture component to this section, all students are expected to read the online course lecture material and to view the recorded lectures. All students are expected to remain current with the course schedule.

Final Grades

In order to pass the course with a letter grade, you must have a 60+weighted average on the exams and you must have a 60+ average on the programming assignments.

In order to pass the course with a C- or better, you must have a 65+ weighted average on the exams and you must have a 65+ average on the programming assignments.

Subject to the "average" conditions above, your final grade will be determined according to the following table, where X is your overall weighted average for projects and final exam.

Range

Letter Grade

98 <= X <= 100

A+

92 <= X < 98

90 <= X < 92

A-

88 <= X < 90

B+

82 <= X < 88

80 <= X < 82

B-

78 <= X < 80

C+

72 <= X < 78

70 <= X < 72

C-

68 <= X < 70

D+

62 <= X < 68

60 <= X < 62

D-

X < 60

Credit Only and Audit students

The grade of "CR" will be awarded to a student taking the course for credit-only who passes the course with a grade of 60.0 or higher.

Audit students must attempt all 3 programs and receive a grade greater than zero for each attempted program in order to receive a grade of AU. Any student enrolled for audit who fails to meet this requirement will receive a grade of NR.


• Textbook
 

The primary, up-to-date, consistent source of information for this course is the lecture notes posted on this site. You are expected to read them and understand them thoroughly. You are also expected to do all of the practice exercises. Videos to go with this course are available at the Engineering Online website. The video tapes are being made anew in a live class this semester, and they will be available as soon as possible after each actual taping.

Textbook: Building Java Programs (2nd Ed) by Reges and Stepp. You likely already have a copy of this from CSC 116.

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 Internet Requirements
 

NCSU and Engineering Online have recommended minimum specifications for computers. For details, click here.


• Instructor
 

Dr. Jo E Perry
Engineering Online
Lecturer
NCSU Campus
Raleigh, NC 27695

James C Tetterton                                                              
Engineering Online
Lecturer
NCSU Campus
Raleigh, NC 27695

Email: jep@ncsu.edu2

 



Email:
james.tetterton@ncsu.edu