CS 330: Syllabus (Spring 2021)

Thomas J Kennedy

Last modified: Jan 11, 2021
Contents:

1 Basic Course Information

The course schedule and website are located at https://www.cs.odu.edu/~tkennedy/cs330/s21.

1.1 When and Where

I am teaching two sections of CS 330, one live and one online. Both sections use the same syllabus and course materials.

The web (online) section has no required meetings.

1.1.1 Live Section (CRN 26084 and 32994)

Meets: Tues. and Thurs., 3:00pm-4:15pm, Dragas 1117

Note that all ODU classes are currently scheduled to be purely online for the first two weeks of the semester.

The provision of face-to-face lectures and live Zoom streams are contingent on the setup of the classroom and supporting equipment, and the general level of Covid-19 activity in the Norfolk/Virginia Beach area. If I become uncomfortable with the safety precautions being taken, or feel that the classroom environment and equipment detract from the quality of the course, then I reserve the right to change to a pure web conferencing and recorded lecture delivery mode.

1.1.2 Web Sections (CRNs 24338, 24339, 24340, 27962)

This course is online and has no regularly scheduled lectures. There may be a limited number of attendance-optional network conferences (announced on Blackboard).

1.2 Objectives

This course will explore the techniques of object-oriented programming, analysis, and design. The emphasis will be upon the development of clean interfaces that permit easy modification and reuse of software components. Other techniques, drawn from outside the object-oriented approach, that significantly contribute to this goal will also be discussed.

Students will gain facility in an object-oriented programming language and will learn the constructs that differentiate such languages from others. This course will explore the idioms and styles of object-oriented programming in C++ and Java, with emphasis upon how these contribute to reusable software components.

Students will learn how to use object-oriented techniques in support of programming. In particular, students will be introduced to the process of object-oriented analysis as a means of understanding an unfamiliar problem domain. Students will learn to build and use models, expressed in the Unified Modeling Language (UML) to codify and evaluate that understanding and to evolve system requirements. Students will learn how to use those models to facilitate a smooth transition from analysis to design and from there to implementation.

1.3 Textbooks

Most assigned reading will be from books and other sources available on-line.

Required:

2 Communications

2.1 Instructor

Instructor Office Phone # Email Home Page & Office Hours
Thomas J. Kennedy Dragas 1100D 757.683.7725 tkennedy@cs.odu.edu http://www.cs.odu.edu/~tkennedy

Important: All email related to this course should have the phrase CS 330 somewhere in the subject line. This flags your message in my mailbox for faster attention.

 

I try to respond to all (properly marked) messages before I leave campus each day (Monday through Friday). On weekends and holidays within 48 on weekends & holidays.

2.1.1 Office Hours

My general office hours are available at https://www.cs.odu.edu/~tkennedy/. Instructions for scheduling a formal appointment are listed on the same page and here. My office hours include both live and web-conference based appointments.

General questions about course content and reports of website problems should normally be asked in the Forums on Blackboard or via email.

Questions about grades, how to solve assignments and other graded activities must be send to tkennedy@cs.odu.edu.

For more discussion on course communications, please refer to the Communications policy.

3 Course Prerequisites

The prerequisites for this course are:

Note that, if it has been some time since you took CS 250 or 333, or if you received weak grades in them, then you may need to do some review work to prepare for this class.

If you are a transfer student who took equivalent courses elsewhere, you would do well to review the material on those course websites and look for topics that may not have been covered in your prior courses, because course “equivalence” is often a very rough approximation. Pay particular attention to the material on design, testing, and debugging, as these are often given short shrift at other institutions.

Either way, if you need to review any of the prerequisite topics described below, the time to do so is early in the semester, before you need it to understand the lectures or are called to use it in assignments.

3.1 General Programming Knowledge

Students should be familiar with certain basic programming techniques that are largely independent of any specific programming language:

3.2 C++

I will assume that you are familiar with the basics of C++, including

3.3 Java

No prior knowledge of Java is assumed.

3.4 Python 3 & Rust

Prior knowledge of Python and Rust is neither expected nor assumed.

3.5 Unix/Linux

All students in the course will receive accounts on the CS Dept. network, and knowledge of how to work with the Linux servers is part of the course prerequisites. This course does not require familiarity with shell scripting. All other topics in CS 252 are required.

Some assignments will require the use of software available only on the Linux servers. Others may require (or, at least, be simplified by) use of the X windowing system.

3.6 General Computer Literacy

You will be studying techniques in this course for preparing professional-quality software documentation. The key embedded word in “software documentation” is “document”. Students taking this course should be able to use word processors and other common tools to produce good quality documents, including mixing text and graphics in a natural and professional manner.

4 Assignments

Assignments for this course will include programming assignments (in C++ and Java), which must be done on an individual basis, and design assignments, which may be done in small teams.

4.1 Expectations

It is my expectation that you have completed approximately 70% of each assignment once half the allotted time has passed. For a two week assignment this would be one week. This will allow you sufficient time to address any issues, refine your testing process, and discuss your solution with me during my office hours.

I expect every student to discuss each assignment with me at least once.

4.2 Assignment Grading

Assignments will be turned in through the CS submission system, rather than through Blackboard–more information is available here. Most of the assignments will be graded by an automatic grader. The results will be sent to your ODU email account.

Unless the assignment explicitly states otherwise, you may submit a total of three times per assignment; the instructor will take the last of the marks, although you may request that your score be “rolled back” to an earlier one. You may NOT submit after viewing the sample solution.

4.2.1 Auto-Grader & Testing

Test driven development is a topic of particular import–not only in academia, but in industry.

You will be expected to make use of Blackbox Testing. This is a topic of particular import. Blackbox testing is covered in CS 250–a prerequisite for this course. You will also need to make use of white-box testing and unit testing. These are topics discussed in CS 250. Take the first week to review these concepts. You will find the necessary materials on the CS 333 course site.

Difficulties with the tests performed by the Auto-Grader should be addressed after the first assignment submission (which should in turn occur no later than halfway to the assignment deadline). If a program fails a test, there is usually an edge-–or corner-–case for which you–the student– did not account.

All tests are designed by me–the instructor. The Auto-Grader runs tests that I use to evaluate my solution. These tests evaluate mechanics of import–e.g., dynamic binding and function overloading.

Be systematic in all changes to your assignment solution and modifications to your tests. Do not haphazardly make changes to an assignment and resubmit hoping for a better grade. Treat each submission attempt as your final submission. Ask for guidance before each subsequent submission.

4.3 Computer Accounts

Students will need an account on the CS Dept. Unix network to participate in this class. This account is unrelated to any University-wide account you may have from the ODU’s Information Technology Services (ITS).

If you have had a CS Unix account in the recent past, you should find it still active with your login name, password, and files unchanged. If you have had an account and it has not been restored, contact the CS Dept systems staff at root@cs.odu.edu requesting that it be restored.

If you do not yet have such an account, go to the CS Dept. home page and look for “Account Creation” under “Online Services”. All students in this course are responsible for making sure they have a working CS Unix account prior to the first assignment.

4.4 Compilers

The “official” environment in which students’ programming assignments will be evaluated is defined by our Dept. Linux servers. It is the student’s responsibility to be sure that their code compiles and executes using the compilers and run-time environment provided there. As of this writing, the compiler versions used are

Help is available for students wishing to install compatible compilers and IDEs on their own PCs.

5 Review Recordings (Recorded Lectures)

I provide recorded Reviews on the course site. These are, in general, condensed versions of my live lectures. My recorded Reviews are available here.

I expect you to view these Review Recordings

6 Course Policies

6.1 Due Dates and Late Submissions

Late papers, assignments, projects, and make-up exams will not normally be permitted.

Exceptions will be made only in situations of unusual and unforeseeable circumstances beyond the student’s control, and such arrangements must be made prior to the due date in any situations where the conflict is foreseeable.

I’ve fallen behind and can’t catch up”, “I’m having a busier semester than I expected”, or “I registered for too many classes this semester” are not grounds for an extension.

Extensions to due dates will not be granted simply to allow “porting” from one system to another. “But I had it working on my home PC!” is not an acceptable excuse.

6.2 Academic Honesty

Everything turned in for grading in this course must be your own work. If an assignment is explicitly described as a team assignment, it must be the work of the team members only.

The instructor reserves the right to question a student orally or in writing and to use his evaluation of the student’s understanding of the assignment and of the submitted solution as evidence of cheating. Violations will be reported to the Office of Student Conduct & Academic Integrity for consideration for possible punitive action.

Students who contribute to violations by sharing their code/designs with others may be subject to the same penalties.

This policy is not intended to prevent students from providing legitimate assistance to one another. Students are encouraged to seek/provide one another aid in learning to use the operating system, in issues pertaining to the programming language, or to general issues relating to the course subject matter.

Students should avoid, however, explicit discussion of approaches to solving a particular programming assignment, and under no circumstances should students show one another their code for an ongoing assignment, nor discuss such code in detail.

Use of Online Resources

You may not post details of course assignments, projects, or tests at online Forums, Bulletin Boards, Homework sites, etc., soliciting help.

You may use information that you have not solicited but have located, subject to the following restrictions:

6.3 Attendance (Live Section - CRN 26084)

The Attendence section of the syllabus only applies to the live section (CRN 36084).

Lecture attendance is not required, but you are responsible for all material covered and announcements made in class. If you are going to miss lecture, be sure to get notes, handouts, etc., from another class member.

6.4 Grading

Assignments: 50%
Midterm Exam: 20%
Final Exam: 30%

Read through further information on my approach to grading.

I will drop one assignment grade or the Midterm Exam grade, whichever improves a student’s overall grade more.

6.4.1 Assignment Drop vs Midterm Exam Drop

All final grade computations are based on 4pt scores (as listed on the Scores & Statistics Page). The computation for dropping an assignment grade is

((sum of all assignment grades) - (lowest assignment grade)) / (number of assignments - 1)

The result is used as the assignment average (50% of your final grade). The computation for dropping the Midterm Exam is

0.20 * (Final Exam grade) + 0.30 * (Final Exam grade)

6.5 Exams

The Midterm Exam and Final Exam will be administered online via Blackboard.

7 Educational Accessibility

Old Dominion University is committed to ensuring equal access to all qualified students with disabilities in accordance with the Americans with Disabilities Act. The Office of Educational Accessibility (OEA) is the campus office that works with students who have disabilities to provide and/or arrange reasonable accommodations.

The Office of Educational Accessibility is located at 1021 Student Success Center and their phone number is (757) 683-4655. Additional information is available at the OEA website http://www.odu.edu/educationalaccessibility/