Syllabus
Course Description
Computer Science 142 is focused on learning the "nuts and bolts" of programming. The goals of CS 142 are to become proficient with the C++ programming language, to become equipped to write programs that solve problems, and to learn the basic techniques of object-oriented analysis and design as they apply to computer programming. We will focus primarily on the following general topics:
- Programming tools and the C++ programming language.
- Principles of algorithm formulation and implementation.
- Object-oriented program design and development.
The lab assignments provide practical experience in developing solutions and writing programs.
CS 142 is designed for students who intend to major in Computer Science or in areas with a strong emphasis on computer programming. The course is a challenging one and demands self-discipline and hard work to succeed.
Text
The textbook for this course is C++ For Everyone, 2nd Edition by Cay S. Horstmann
Course Work
Course work in CS 142 will consist mainly of completing lab assignments and exams; both will consist of designing, implementing, and testing C++ programs to solve given problems. Lab assignments are designed to help students apply the programming concepts that are learned through attending lecture and reading the course text; help sessions, taught by the Teaching Assistants, are designed to help students complete their assignments. Exams are designed to test students' mastery of the programming concepts.
Teaching Assistants
Several teaching assistants (TAs) are available to help students complete assignments. They are dedicated to helping each student succeed, as this course is challenging for most students. They are willing to give substantial individual attention. However, we want everyone to succeed, so students need to be respectful of TA time.
The role of the TA in the learning process is to teach students (as needed) how to complete assignments. Their role is NOT to do the assignments for the students. They will help clarify concepts, guide thoughts, and help debug code, but will not write the code for the students. The general rule is that TAs do not touch the keyboard. Students need to understand the concepts of the assignments, not just how to finish them. Otherwise, they will be very unhappy during exams when the TAs are removed from the equation.
To receive help from a TA, students need to request help via the help request program. Students on the help/passoff list are helped in a first come, first served order.
Note: Students not on the help/passoff list at least 15 minutes prior to TAs leaving for the day will generally not be considered for help/passoff on that day.
Teaching Assistants are also responsibile for grading assignments. All lab assignments and exams will be graded by the TAs. If a student has a question/concern about his/her grade, the student first needs to talk to the TA that graded the assignment, then an Assistant Head TA, and finally to the Head TA. At that point, if there are unresolved issues, the Head TA will refer the student to the professor. Students SHOULD NOT talk to the professor first about grades. The professor cares deeply about each student's success. However, with large classes, the professor cannot be involved with every individual lab assignment. Therefore, most administration duties are left to the TAs. Treated with respect, the TAs will be more than willing to help.
If you wish to speak with a TA, check the TA page for contact information and a schedule of when he/she is working in the lab.
Lab Assignments
Introduction
There will be 11 lab assignments (as well as a lab orientation) for students to complete throughout the course (see the course schedule for due dates). Lab assignments consist of designing solutions and writing C++ code to solve problems. Assignments sometimes consist of different parts. Solutions must fulfill all requirements for a specific part to receive any credit for that part. Students may pass off one or more parts of a lab to receive credit. Students may also pass off a lab multiple times as they complete different parts
CS Computer Labs
Students are encouraged to use the computers in rooms 1119 and 1121 of the Talmage building to complete their assignments, as the TAs will be found in these rooms. However, CS students may use any of the open CS labs in the TMCB to complete their work. CS student accounts will work on both Windows and Linux machines. Students are welcome to use their own computers for completing assignments, provided they are willing to assume the risks associated with computers that the Department does not maintain. Back-up copies of files should be made regularly. Independent of what computers students choose to use, all passoffs take place only in the 1119 and 1121.
Course Text Reading/Help Sessions
Students are encouraged to read the text material before attending lectures and help sessions so that they are familiar with the concepts that will be discussed. Although reading is not mandatory for this class, most students will not succeed without carefully reading all the necessary text material. A schedule of reading corresponding to the lecture schedule can be found on the course schedule. Copies of the course text can be borrowed for in-lab use only from TMCB 1119.
Help Sessions (see TA schedule) are designed to help students with specific lab assignments. These sessions complement lectures in that they emphasize specific principles needed for lab assignments, whereas lectures are more general.
All help sessions will be taught in 1121 TMCB. They are not required for credit. However, students are encouraged to attend at least one help session per lab (students may attend as many as desired). For the average student these help sessions save hours of time if the student goes prepared (by being current in the reading and reading the lab assignment ahead of time) and ASKS QUESTIONS.
In order to maximize the effectiveness of TA hours, students are required to attend at least one help session for a lab assignment to receive help from a TA on that assignment. Because all students complete the same lab assignments, multiple students often have the same questions; these sessions help save the TAs and students a lot of time. Thus, if you know you cannot attend help sessions regularly, you may want to take this course another term or semester.
Although reading and help sessions are not required to receive credit for the course, you should do both of these things before asking for individual TA help. Many questions will be answered through these two media. Once you have completed the reading and attended a help session for a given lab assignment, then the TAs will be more inclined to assist you with individual questions.
Familiarity with the course text is particularly helpful during exams which, typically, are open-book, but closed-TA.
Completing Lab Assignments
Each lab assignment will be passed-off with a TA in a lab. The TA will spend at most 5 minutes with a student, after which the student may again use the help/passoff program to ask for TA assistance. Students will use the help/passoff program to ask for TA assistance. Once a student believes he/she has fulfilled all requirements for one or more parts of a lab assignment, the student must request a passoff using the help/passoff program. The next available TA (according to the description above) will then check the student's code and/or output to determine if the students has met all the requirements for the assignment. If the student has met all requirements, the TA will then enter the score for the lab assignment on the TA's computer. Students are not finished with an assignment until a TA enters the score into the computer.
Any extra credit feature(s) associated with a lab assignment should be completed at the same time as the lab assignment. The pass-off date for the lab and any extra credit feature(s) will be the last date any aspect of the lab is passed off.
Note: A student must be on the passoff list at least 15 minutes prior to the the time TAs leave for the student to be passed-off that day.
Lab Due Dates/Late Policy
Lab assignments count for 300 points (50%) of the final grade (see below for exact grade breakdowns). As such it is vital that students complete lab assignments on time. To encourage students to complete lab assignments on time, you receive one late day for each day late an assignment is turned in. However, we do still want all students to complete all lab assignments. So, students can only receive up to 10% of a lab's in late days (i.e. if a lab assignment is worth 40 points, students can receive a maximum of 4 late days for the assignment). Therefore, even if a student turns in an assignment on the last day of class, he/she can still receive some credit. However, ALL ASSIGNMENTS ARE DUE BY THE LAST DAY OF UNIVERSITY CLASSES FOR THE SEMESTER OR TERM!
To further promote punctuality of completing lab assignments, we do offer the opportunity to earn additional early days. By turning labs in early, students may earn just as many early days as late days, for a given assignment (i.e. if a lab is worth 20 points students can earn a maximum of 2 early days).
Any day that the TAs are working counts towards the accumulation of early or late days.
At the end of the semester each early day cancels out a late day. Each remaining late day subtracts 5 points from the student’s total of 600 possible points, whereas each remaining early day adds 1 point to the student’s final score, up to 24 points.
Experience has shown that unexpected events and/or emergencies arise throughout the semester for many students. To accommodate these events and emergencies students receive 4 free early days at the beginning of the semester (given at the time a student completes orientation). Lab assignments turned in using early days will be given full credit. Your early days will automatically be reduced by the appropriate amount, up to the maximum late days for the assignment.
Exams
There are 2 midterm exams and a final in this course. (See the course schedule for specific dates.) They are held (or given out) in the labs and are administered by the TAs. They are composed entirely of programming problems which students will be required to solve within the time limit, usually 3-4 hours for a timed in-lab test or two days for a take-home exam. Exams count for 300 points (50%) of the final grade.
Exams should normally be submitted in the labs with a TA. However, if you need to submit your exam over a weekend or holiday when TAs are not working, emailing your exam files to the head TA can serve as a time stamp for the end of your exam. The exam packet should still be turned in to a TA in the labs as soon as possible.
For a take-home exam, exams are picked up one day and are due 1-2 days later (depending upon the time given for the exam) 15 minutes prior to the end of the TA hours for the day. Any student on the passoff list prior to that time will be given credit for finishing that day. Points for a take-home exam will be deducted at the rate of 20 points per day for each day late an exam is submitted. A maximum of 60 points will be deducted for a late exam. Take-home midterms submitted more than four days after the close of the exam period will not be accepted or graded.
For an in-lab exam, points will be deducted for late exams at the rate of 2 points per hour while TAs are working + 10 points per night (e.g. if an exam is due at 5:00 P.M. on Thursday and it is turned in Friday at 10:00 A.M., 16 points will be deducted from the overall exam score).
Help for students on exams is very limited. Students may NOT DISCUSS the exam with ANYONE other than TAs. The TAs can help clarify exam problems and review general programming concepts. However, they cannot give specific advice on the exam, nor write or debug any code.
Final Grades
Students may check their grade at any time by selecting "View Grades" in the Information Menu.
- Final Grades are determined on a 600 point scale, earned as follows:
| Lab | Points | Lab | Points |
|---|---|---|---|
| Lab 1 | 20 | Lab 8 | 30 |
| Lab 2 | 20 | Lab 9 | -- |
| Lab 3 | 20 | Lab 10 | 50 |
| Lab 4 | 40 | Lab 11 | 30 |
| Lab 5 | 30 | Exam 1 | 100 |
| Lab 6 | 30 | Exam 2 | 100 |
| Lab 7 | 30 | Final | 100 |
- Extra Credit is available for many labs and exams. Any extra credit earned will be added to the final total points
- Each unused early day will be worth one extra credit point, up to 24 points.
- Final Grades are determined as follows (To receive an A in the class, you must earn at least an 75% on the final exam):
| Grade | Points | Grade | Points |
|---|---|---|---|
| A | 570+ | C | 438-461 |
| A- | 540-569 | C- | 420-437 |
| B+ | 522-539 | D+ | 402-419 |
| B | 498-521 | D | 378-401 |
| B- | 480-497 | D- | 360-377 |
| C+ | 462-479 | E | Below 360 |
| I = Unexpected events that occur after the 12th week of the semester or 6th week of the term and prevent completion of the course. | |||
Success Factors in CS 142
A large survey correlated several factors with grades in CS 142. It produced the top 7 behavior patterns that lead to success in CS 142:
- Perseverance in completing programming assignments
- Sufficient time devoted to 142
- Working with, and learning from, other students in 142
- Turning lab assignments in on time
- Being married
- Wise course load
- Previous programming experience
Announcements
It is the student's responsibility to check the home page for announcements about changes or important notices that could be made throughout the semester for the course. Students are responsible for knowing the information posted.
Collaboration Policy
All work a student submits for this course must be his/her own individual work. Students are encouraged to help each other understand concepts, plan out program organizations, and resolve programming issues. However, each student must write his/her own designs, algorithms, and programs. Do not turn in work copied from someone else without attributing it!! On tests students may not use any other student's code, even if the other student's work is cited. Students may be reported to the Honor Code Office for any violation or dishonest work.
We have provided appropriate means of getting help and understanding from TA's and other students. Students are free to discuss various programming topics with anyone (except during examinations). The purpose of doing the labs is to help students apply programming concepts. If a student completes, and understands, all the lab assignments, he/she will do very well in this course. All can get A's. However, it does require a lot of time and effort.
Preventing Sexual Harrasment
Title IX of the Education Amendments of 1972 prohibits sex discrimination against any participant in an educational program or activity that receives federal funds. The act is intended to eliminate sex discrimination in education. Title IX covers discrimination in programs, admissions, activities, and student-to-student sexual harassment. BYU's policy against sexual harassment extends not only to employees of the University but to students as well. If you encounter unlawful sexual harassment or gender-based discrimination, please talk to your professor; contact the Equal Employment Office at 422-5895 or 367-5689 (24-hours); or contact the Honor Code Office at 422-2847.
Students with Disabilities
Brigham Young University is committed to providing a working and learning atmosphere that reasonably accommodates qualified persons with disabilities. If you have any disability that may impair your ability to complete this course successfully, please contact the University Accessibility Center (422-2767). Reasonable academic accommodations are reviewed for all students who have qualified documented disabilities. Services are coordinated with the student and instructor by the UAC. If you need assistance or if you feel you have been unlawfully discriminated against on the basis of disability, you may seek resolution through established grievance policy and procedures. You may contact the Equal Employment Office at 422-5895, D-282 ASB.
