Read the following paragraph very carefully. Some students who really should be in CSCI 1227 come to CSCI 1228 by mistake. CSCI 1227 is the second computing course at the first-year level for science students not necessarily interested in pursuing Computing Science as a major. CSCI 1228 is the second computing course at the first-year level for those who are interested in pursuing Computing Science as a major. Make sure you're in the right course. Talk to your instructor if you're in doubt.

Students entering this course should be aware, up front, what course history shows: Students with a grade of less than B in CSCI 1226 tend not to do well in this course. Indeed, even a grade of B or higher in the previous course is not a sure predictor of any kind of success in the current course. A much better guarantee is a willingness to work hard and learn something, and a determination to come to grips with some things in a way that may be a new experience for some.

Students are expected to have the background described below before beginning CSCI 1228, but they must also be aware that some things they have been used to in CSCI 1226 may be different in the new course: a new IDE or editor and new coding styles, for example. Students need to be open-minded about these changes and prepared to accept them, just they would have to adjust to similar changes in moving from one job to another in the real world. CSCI 1228 is a new, different and more demanding world to live in when compared to CSCI 1226 (or compared to CSCI 1227, for that matter).

At the most fundamental level, the course assumes that the incoming student has had some prior programming experience, generally that acquired by having taken the previous (prerequisite) course here at Saint Mary's (namely, CSCI 1226). Additional related experience may be self-taught, or may have come from having taken a programming-related course in high school, university, or elsewhere.

The student is expected to know about, and to have worked with, some fundamental programming concepts such as simple data types, looping constructs, decision-making constructs, and modularity via classes and their methods, as seen in the Java programming language. Reasonable familiarity with good program development practices used to write clear and correct source code following the required style rules and guidelines, getting the source code to the executable stage, and testing the resulting executable until it performs its intended task, is also expected of students in this course.

All of the above-mentioned concepts will, of course, be reviewed in this course, but perhaps at a somewhat faster pace than would be the case with a large group of students with no such prior experience.

Although the level of mathematical background required is not high, students in this course will also be expected to be comfortable working with both integers and real numbers, with basic arithmetic, and with basic logical reasoning.