CS 410 Course Syllabus

Course Objectives This course falls into three parts, and the final project. Each is described below. Programming will be done in Java.

Part I, Introduction to Java in a Linux Environment This will teach the core of the Java language. We assume the student is already proficient in programming in a higher-level language. The emphasis here will be on pointers, dynamic memory allocation and the writing of correct, leak-free programs.

We will learn about the compilation process, including preprocessing, assembling, compiling, and linking.

If you are a Windoze user, I suggest you do a Windoze install of Ubuntu and that you download the necessary accoutrements for developing in Java.

Part II, System Programming We will devote some time to the system call interface and to writing low-level programs that interact directly with the file system and the Linux kernel.

Part III, One-Dimensional Data Structures This portion of the class is given over to implementing and using one-dimensional data structures including stacks, trees, queues and arrays. We will draw on the Giant Turtle.

Part IV, Final Project The students will propose and produce a final project that applies the techniques of this class in Java.

Sources of Help If you run into difficulty, avail yourself of our help ASAP. You can send us email, drop by our offices or make an appointment a specific time. We both use Facebook chat, and will establish Facebook groups for our classes. Some of our work service student will be available during certain hours to help you; the time and place of this service will be announed on this site when everyone is done scheduling. Tutorial Hours will be posted on the deparmental site. You may approach either of us for help.

Class Organization Some programming projects will be individual efforts, although there will be a few joint activities (especially in pairs). You are expected to gain an active understanding of the material; this means that you need to be a full participant in class at all times. You are encouraged to share ideas and ask questions. Unless I specify otherwise, you may help each other debug code.

Programming Assignments and Other Assessments No one really understands what is going on in a programming class until they can write programs that compile and work. It's this simple: if you can't do this, you don't really understand the material. The biggest mistake made by many CS students is that they confuse an active understanding of the material with a passive understanding. Until you attempt, fuss over and debug programs, you are nowhere. Therefore, you will see work on a wide variety of programs.

Academic Honesty in this Class: See the departmental statement on academic honesty.