You should carefully study the first 6 chapters of the textbook or the same material from an equivalent introductory book on C++. During our weekly lab sessions, you will perform activities to improve your understanding of the material presented in lecture and in the textbook. I will assign programming problems that you will complete inside and outside of lab. There will be 3 exams and a final exam.
All required work is detailed in the course schedule, which is published on the Web. I will announced in class or by email changes to required work, points, deadlines and exam dates.
I encourage you to collaborate with other students to complete the labs and assignments. However, you must submit assigned work individually and you are required to understand what you submit. I will use exams and a final exam to assess your understanding of submitted work for labs and assignments.
In this course, you will complete a sequence of assignments and labs. The assignments involve research, programming and problem solving. The labs also involve research, programming and problem solving, but I will generally show you their solutions in advance of their deadlines. The work in this course can be completed using the lab computers in JB 359 and JB 358. The work can also be completed outside the labs on your personal computer in any of the 3 common operating system environments: Linux, Windows, and OS X. You have 2 choices when working from home: work on a lab machine through a remote connection, or work completely on your own computer. If you work on your own computer, you will need to set up a C++ development environment.
Programs submitted with compilation errors receive no credit.
Programs that are incorrect or do not solve the stated problem will lose some or all points.
Work that is submitted late will lose some or all points.
If you submit copies of other people’s work, you will lose all points for that work. However, if you work with a partner, you can submit identical programs, but you need to refer to your partner by name in a comment at the top of your source code file.
Writing a program to produce required behavior is not good enough for a full score in this class; you must also write code that is readable by humans. Program readability is important because realworld programs are read over and over again in the process of fixing bugs and adding new functionality. Program readability will be evaluated according to the following set of criteria.
|Organization||Is source code well organized?|
|Cleanliness||Have unnecessary variables and logic been removed from the code?|
|Logical indentation||Does indentation show logical structure?|
|Consistent indentation||Does indentation follow a consistent policy?|
|Portable indentation||Are tabs omitted?|
|Logical spacing||Does spacing show logical structure?|
|Consistent spacing||Does spacing follow a consistent policy?|
|Expressive and clear naming||Do variables, functions and classes have names that clearly express their purpose in the program?|
|Clear responsibilities||Are responsibilities of functions and classes clear and consistent with their names? Is the code structured to avoid reliance on side effects produced by functions?|
|Necessary comments||Are comments included when needed?|
|Unnecessary comments||Are superfluous comments omitted?|
|Nonredundant||When 2 or more places inside a program need to perform the same activity, is that activity defined as a function and called as such from where it is needed?|
|Spelling||Are user-defined identifiers free of spelling errors? Are comments and other documentation free of spelling and grammatical errors?|
Don't use tabs for indentation in your source code in this course. Tabs display differently in different viewing and editing tools. In general, tabs will degrade readability for some people who read your code, especially if you mix tabs with spaces. If you want full score on your assignments in this course, you should not use tabs. If you are in the habit of pressing tab in your editor and want to continue working this way, look for an option in your editor to replace tabs with spaces.
Labs and exams have point values, which are shown on the course schedule. Your percentage score will be computed by dividing the total of all points earned by the total possible points. The normal scale will be used to assign a letter grade.
|95 - 100||A|
|90 - 94||A-|
|87 - 89||B+|
|84 - 86||B|
|80 - 83||B-|
|77 - 79||C+|
|74 - 76||C|
|70 - 73||C-|
|67 - 69||D+|
|64 - 66||D|
|60 - 63||D-|
|0 - 59||F|
This course is designed to contribute to the following learning outcomes.
a) An ability to apply knowledge of computing and mathematics appropriate to the discipline.
b) An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution.
c) An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs.
i) An ability to use current techniques, skills, and tools necessary for computing practice.
k) An ability to apply design and development principles in the construction of software systems of varying complexity.
If you are in need of an accommodation for a disability in order to participate in this class, please let me know as soon as possible, and also contact Services to Students with Disabilities at UH-183, (909)537-5238. You are advised to establish a buddy system and alternate in the class if you require assistance in the event of an emergency. Individuals with disabilities should prepare for an emergency ahead of time by instructing a classmate and the instructor.
See the CSUSB Bulletin of Courses for the University's policies on course withdrawal, cheating, and plagiarism.
The Computer Science and Engineering Club is a student-run organization that uses a combination of email and campus meetings to plan events, ask and answer technical questions, post job and internship openings, and discuss other topics of interest to computing majors at CSUSB. Club-sponsored events include seminars, workshops, tutoring and fun activities.