General Information
Course: Cog212 "Principles of Programming"
Instructor: Craig Graci
Office: 114 Snygg Hall
Telephone: 315.312.2690
Text: None
Course Description
The notion of "object" directs the discipline of programming presented in this course. The concepts of object state, object behavior, and object classification are threads which tie myriad ideas together. The Java programming language is, in the main, defined. It serves as the medium through which key ideas are introduced. The "smaller" isssues of message passing and control flow are discussed, as are the "larger" issues of abstraction, encapsulation, and hierarchy. Variables and typing, procedures and parameters are discussed. Functionality provided in specific java packages (especially, blue.io, and java.lang) is employed. Standard algorithms are presented. Problem solving strategies are articulated and exploited. Elements of the emacs text editor, the unix operating system, and the Coloured Clay programming language are integrally incorporated into the course.
Main Course Objectives
In this course you will:
- To become knowledgeable of the fundamental concepts and methodologies associated with object-oriented programming.
- To perform top-down design, bottom-up integration, and incremental programming activities.
- To learn a fairly large subset of the java programming language.
- To obtain a working knowledge of standard language description mechanisms.
- To become operationally capable of reading, writing, and running java programs.
- To explicitly employ certain general problem solving strategies, most notably, decomposition, composition, describe and match, patterning and imaginative construction.
- To learn a number of standard algorithms, including merging, searching, and sorting algorithms.
Requirements
You are required to regularly attend class. You are required to take all exams. Beyond this, you are required to satisfactorily complete Laboratory Challenges and Programming Challenges. The Laboratory Challenges are to be done, for the most part, during your scheduled laboratory session. They will feature elements of emacs, unix, Java, and Coloured Clay. The Programming Challenges are to be written on your own using Java.
Grading
Your grade will be determined on the basis of:
- Three "regular season" examinations, each worth 100 points
- One "final examination" worth 150 points
- Laboratory Challenges, collectively worlth 50 points
- Programming Challenges, collectively worlth 150 points
Other Things
- All assignments for which submission is required must be handed in to me immediately after class in the room where this class regularly meets. All assignments must be presented in the form of an 8 1/2 x 11 inch document, bound on the left by three staples. Each must begin with a title page which includes your name, the number of the assignment, and a brief description of the assighment. Should you insist on turning in an assignment in any other manner (for example, by handing it to me personally, slipping it under my office door, placing it in my mailbox, asking another human to give it to me), the assignment will immediately be given the negative score of -100%.
- Requests to make up exams or assignments will rarely be considered unless accompanied by a written medical excuse for your absense.
- It is intended that you complete your work by yourself. You are, of course, welcome to ask specific technical questions of others and converse over conceptual issues, but you should be doing your own work. Compelling evidence that someone other than you contributed conspicuously to the completion of required work will result in a "maximum negative" grade for that assignment, failure in the course, or worse.
- As a rule I do not respond to email from students in this course. Consequently, questions concerning course content, operational aspects of the course, the status of your existence in the course, or anything else pertaining to the course will have to be addressed to me by more traditional means.