Course Syllabus
Computer Science 142 focuses on learning the "nuts and bolts" of programming. The goals of CS 142 are for you to become equipped to write programs that solve problems, to become proficient with the C++ programming language, and to learn the basic techniques of object-oriented design. Lab assignments provide practical experience in developing solutions and writing programs. We focus on the following topics:
- Principles of algorithm formulation and implementation
- Programming tools and the C++ programming language
- Introduction to object-oriented program design and development
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 challenging and demands self-discipline and hard work to succeed. However, it is also meant to serve non-CS students and it is not assumed that you have any previous programming experience. The time required may vary significantly based on experience, but we make numerous resources available, and you can succeed if you put in the effort. Read this entire syllabus carefully! Then read the sections in the "Critical Resources" module found in "Home."
Canvas has a flexible notification mechanism to notify you when updates are made to course items. We try to make as few updates as possible. You can set your preferences on what, how, and when to receive notifications. From time to time we send critical announcements about exams, updates, etc. Read those carefully as you are responsible for those. If you set notification preferences make sure that you leave announcements at its default of "Notify me right away."
Learning Environment
zyBooks: Programming in C++ is the required text for this class. You must create an account at zyBooks to access this book. Go to learn.zybooks.com. Create an account and enter the zyBook class code BYUCS142Fall2018. The name you enter for your zyBook account must match EXACTLY your sortable name in Canvas. View (but DO NOT change) your sortable name by going to Canvas >> account >> settings >> sortable name. In the corresponding zyBooks fields enter your first and last names. (You do not need to enter your middle name). Enter your 142 section, which you can find at mymap.byu.edu, in the class section field. If you change sections, you must update your new section in your zyBook profile.
You can subscribe to Zybooks beginning 2-3 weeks before the beginning of class. Your subscription runs until two weeks after class. After you subscribe to the book, click the person icon on the top right corner, select "My zyBooks library," then select "How to Use zyBooks." This is a small one chapter zyBook which tells you how to use zyBooks in general. Read this carefully! Then go to your BYU C++ zyBook for CS 142. We have adapted this text specifically for our BYU class. After completing labs, you should download copies of the source code for your lab to your local computer for backup. If you drop the class, zyBooks will give you a full refund. Just contact support@zybooks.com.
With the zyBooks approach you are involved in an interactive learning exercise. Rather than reading chapters about abstract ideas and then making the leap to implementing them once you get to the lab, this approach allows you to interact and master concepts as you go. The reading and activities are required. Much of your learning will happen while doing the reading and activities. Following are the learning activities you will be doing in zyBooks as you do your reading.
- Participation Activities: The participation activities are relatively easy and you are not graded on whether you get them right or not, just on if you participated in the exercise. It is important to think carefully as you do them, as this makes what follows easier.
- Challenge Activities: The challenge activities require you to get the right answer, but you get unlimited attempts. After you submit each answer, the zyBook will give you feedback which is important to read. Don’t be afraid to try things, especially with program snippets. Fiddle around! Trying things is one of the best ways to learn what is really happening.
- Preparatory Labs: Preparatory labs prepare you even more for the main lab. You will develop, test and submit them. When you submit, the lab is auto-graded with immediate feedback on mistakes. You get unlimited submissions.
- Main labs: There are 10 main lab assignments, one at the end of each chapter.
Reading Activities and Expectations
Use your Canvas calendar to see class topics and due dates for all assignments, exams, etc. Our requirement is that you finish the participation and challenge (P&C) activities and the assigned reading before lecture. In that way you will be prepared to better learn and ask questions as we discuss topics together in class. This will make you a better learner in general, since in the real world you need the skill of learning concepts without an instructor. It also allows class time to explore concepts not as well covered in the text. We also expect that you will have finished as much as you can on the assigned preparatory labs before class. Completion of participation, challenge, and preparatory lab activities count significantly towards your grade. The score you get on participation, challenge, and preparatory lab activities is the percentage of the activities done at the time of the late cut-off (10 minutes before lecture for P&C). zyBooks lets you see the percentage you have done for each chapter so you can check to make sure your score is correct. We upload the score you had at the late cut-off to Canvas, so it may sometimes take a day or so before your P&C and Prep lab scores show up in Canvas.
There are some chapter sections marked as optional. If you plan to take CS 235 then you should read these sections carefully and do the activities just like the other sections, even though we will not grade activity completion for these sections. Even if you do not plan to take 235, we expect you to at least read carefully the initial part of the section to get an exposure to the topic, and you should at least look over the entire section at a high level, and perhaps do some of the activities.
Main Labs
There are 10 main programming labs (see schedule for deadlines). You may use computers in any CS open lab in the TMCB. If you are in rooms 1119, 1121, 1102, and 1138 you may also request face-to-face TA help. You are welcome to use your own computer for assignments, provided you assume associated risks (compatibility, maintenance, backup, etc.). You will develop the first 3 main labs directly in the zyBook. After that, you will program in the Visual Studio (VS) environment. Make backup copies of your files regularly.
When starting a lab, thoroughly read the lab requirements (specifications) found in the zyBook lab chapter. For further help, review the companion lab provided for each Main lab and attend a Help session. The zyBook submission and auto-grading process is similar to preparatory labs. However, in addition to the auto-grade you get for submission results, a TA will grade your code based on a) did you fulfill any special requirements detailed in the lab specification, and b) did you use good coding style. The style guide and grading details are found in Critical Resources.
You can do multiple submissions in zyBook to get your best auto-grade score. Sometimes students will forget to submit after their last few edits (especially when they are just in comments). Make sure that the last submitted version is what you want to be graded. Unfortunately, we have no way to know when you are done in zyBooks. Thus we need you to also submit your work for grading in Canvas. For each main lab you will find a corresponding "Quiz" in Canvas such as "Main Lab 1 - Do As I'm Doing". These Quizzes require no answer. You just hit submit to signal the TAs that your lab is ready to grade.
If you realize right after submitting that you forgot something, then you may submit in zyBooks again, but once a TA starts grading a version, we ignore subsequent submissions. TAs will grade your most recent zyBook submission available when they start grading. Early points or late day usage are based on when that zyBooks version was submitted. You read feedback on your lab by looking at the feedback in the submission Quiz. Your lab is graded only once. There are no resubmissions for subsequent grading.
Pair Programming
"Pair programming" is a style of team programming used in industry which can also be helpful in learning to program. It is more than just a group project. In pair programming, two programmers sit shoulder to shoulder during the entire code planning, writing, and debugging. They evenly split coding time as "driver" or "navigator", but they are both actively involved in every line of code. You are required to do lab 4 as pair programming and labs 1, 6, and 9 you must do alone. You have the option to do labs 2, 3, 5, 7, 8, and 10 either alone or with pair programming. Pair programming has been shown to lead to better code and understanding than can be done by one programmer alone, even with expert programmers. In order to understand what is expected of you in pair programming, you are required to read "All I really need to know about pair programming I learned in kindergarten," before your first pair programming experience.
If you and your partner approach pair programming with a positive attitude it will be a good experience. It is a chance to teach each other and learn from each other. By having two pairs of eyes on your code, it is easier to propose more elegant solutions, avoid bugs, style errors, etc. One big advantage is that you fill in the initial blind spots of each other, often avoiding those exasperating long delays caused by "trivial" items that you missed. If your partner is more advanced than you, enjoy the opportunity to learn, but make sure you are still putting in full effort and adding ideas, typing at least half the code, and completely understanding each step taken. If you are more advanced than your partner, enjoy the opportunity to serve and teach. You will be surprised at how much you learn when you teach something to someone else. It is the responsibility of both partners to ensure that you both completely understand all of your code before you submit it. Pair programming can be a great learning experience for both if done correctly. However, if abused, with one partner depending on the other, then it is a variation of cheating, where one uses code written by someone else to get class credit.
When doing your lab as pair programming it is up to you to find a partner who is also currently taking CS 142. If you are having difficulty finding a partner, go to discussions "Finding a Partner for Pair Programming..." to look for available partners or to post your availability.
Do the following when you do pair programming.
- In the Canvas submission quiz for the lab, state if you did pair programming, who your partner was, and whether you used proper pair programming.
- Submit the final code using zyBooks from both of your accounts. Your submitted code should be exactly the same.
- For your safety, meet in the TMCB labs or some other public place to work.
By stating that you used proper pair programming you affirm that you:
- Worked "side-by-side" on ALL aspects of creating the program, including the design, the implementation and the testing of the code.
- Evenly split coding time as "driver" and "navigator", and switched roles frequently.
- The navigator actively reviewed each line of code as it was typed in, watched for errors, style issues, etc. and gave input to the driver, while also considering strategic direction for upcoming lines of code, etc.
- You took time to teach each other, and both of you understand all aspects of your submitted program.
Lab Analysis
Comparing your finished code with others is one of the best ways to learn to be a good programmer. All students do Lab Analysis (including when pair programming) after each completed lab. For Lab Analysis you compare your code with that of another student. You both look carefully at each others code, analyze the differences, and discuss/analyze the pros and cons of each other’s approaches. To get credit you must do at least one analysis with another student, but we encourage you to do more, especially as the labs get more difficult. When pair programming your team does lab analysis with other individuals and/or pair programming teams.
You may do lab analysis before you submit your lab for grading if both students already have full auto-grade points. If you do lab analysis before grade submission, you may review each other’s style and special requirements and make updates before you submit for grading in order to get maximum points. Otherwise, you do Lab analysis after you have submitted your lab for grading, in which case you can not update your lab and resubmit in zyBooks after doing lab analysis.
Exams
There are two midterms and a final exam. All exams are programming based. They may be one program like a main lab, or a series of smaller programs similar to the challenge activities and prep labs, or some mix. They are created so as to be doable in under 3 hours. They are taken in the 142 labs with no access to internet or other resources other than your zyBook and Visual Studio. The week before the exam, you must sign up for a test slot at Exam Signup. We recommend you sign up early as slots are less crowded. If you forget to sign up, and if the remaining slots are full, your only option is to contact CS142question@gmail.com and request to take the test during the make-up slot we offer the morning (9am) following the last day of the exam. You will have 15 points deducted from your exam score.
You will be given a password to access the exams during your session. TAs will be there, but they can only give clarification on requirements. Exams are submitted and graded just like main labs. You submit code for auto-grade in zyBooks and then you submit the ready to grade quiz from Canvas when done. TAs grade for style and requirements. The code functionality is auto-graded, and thus you must get it correctly working. Like real world programming, getting close does not get credit; it must work! You already demonstrate basic programming skills with main labs. Because of a) the time limitation and b) no access to outside help, the exams also test other aspects of your programming ability including:
- Your ability to program completely on your own with no outside help.
- Your ability to program within a time constraint. The better you have become at programming, the less the time limitation will affect you. We know people vary in their speed. We write the test so that you should be able to finish in under the time constraint. However, the time constraint is part of the test. The amount you can finish in the time limit is an indicator of your current programming ability.
The Monday following each midterm we will make the exam available along with our solutions to the exam, so that you can do a side-by-side comparison and analysis of your solution vs ours, which you will submit. Many ask how to prepare to do well on the exams. Two key responses are:
- Get to the point where you can do the preceding main labs and activities with little outside help.
- Starting from the preceding prep labs, main labs, or code done in class, extend those specs on your own to do additional functionalities. Code it up on your own, debug and test, and then extend it to do more things. Do this a few times and your confidence, enjoyment, and programming ability will increase greatly.
Grading Scale
Your letter grade is based on these percentages.
| Grades | Percent |
| A | 93% |
| A- | 90% |
| B+ | 87% |
| B | 83% |
| B- | 80% |
| C+ | 77% |
| C | 73% |
| C- | 70% |
| D+ | 67% |
| D | 63% |
| D- | 60% |
| E | 0% |
Grading Policy
Do NOT ask for a final grade adjustment just because you are close to the next highest grade! Check your grades throughout the semester. It is your responsibility to ensure that your assignments have been graded. E-mail cs142issue@gmail.com promptly if you see an assignment that did not get graded. Before the last week of class, make sure all assignments have been properly recorded.
Attendance and Participation: 5% of your grade is based on attendance and participation. Participation will be defined by each section. There is a quiz in the attendance module of Canvas which you must take at the end of each week to report your attendance and participation. If you feel you are sufficiently advanced to not require lecture attendance then take the on-line section where attendance is not counted towards your grade.
Start your assignments early, as unforeseen bugs (i.e. items which cause your program to not function properly) invariably arise, and they take time to fix. These bugs can be very frustrating, but learning how to recognize, find, and fix bugs is an important skill that only comes from experience. The "late cut-off/deadline" for assignments should not be considered as the "due date." The goal is to finish earlier! If you start just before the late cut-off, you will be stressed and anxious, work less effectively, and have a much less enjoyable experience. If you have a very unusual circumstance (e.g. extended sickness) you may contact us at CS142issue@gmail.com to work something out.
To accommodate unexpected events (sickness, emergency, extra nasty bug, etc.), all students get 8 free late days which can only be used for main labs, prep labs, or exam analyses. That is a total of 8 late days, not 8 late days for each category. Whenever you submit a main lab or midterm analysis late, we automatically subtract the number of late days from your remaining amount, assuming you have enough remaining to cover the lateness; otherwise you get 0 for that assignment. To use late days for prep labs, e-mail cs142issue@gmail.com. Once a late day has been used, it cannot be reallocated for a later assignment. We add one extra credit point to your lab 10 score for each late day you have remaining at the end of the semester. Lateness increases by one late day Monday-Saturday at midnight. Thus, if an assignment deadline is Friday, and you turn it in Monday, it would cost 2 late days (1 for missing Friday, another for missing Saturday). If you turned it in Sunday, it would still cost 2 late days. NO work can be turned in after the last day of scheduled classes and late days can not be used to turn in assignments after the last day of class.
To further reward punctuality, we give extra credit for early submission of main labs. You earn 1 point extra credit per day up to 4 days. Extra credit points are accrued for every midnight left between submission and the midnight of the lab deadline (except Sunday).
Other Learning Resources and Teaching Assistants
Learning to figure things out without going to the TAs is an important skill to develop. First, read carefully the text, do the activities and labs as best you can, and attend class. Discuss concepts with classmates and friends. We have digital discussions in Canvas for labs, chapters, finding partners for study groups, lab analyses, etc. Use the Internet to google the topic, or look at C++ reference cites, etc. (but do not to look up versions of the code itself). Make sure that interaction with colleagues or internet, etc. is for concept understanding, and not to get the solution code. The former is great learning; the latter is cheating. Explore Other Resources in Canvas and specifically our FAQ, VS info, multiple lecture videos, TA handbook, and links to useful sites.
If you still need help contact a TA. The TA's role is to help you master the topics of class. It is NOT to do assignments for you, or be your full-time tutor. They help clarify concepts, guide thoughts, and help you debug your code, but will not design programs for you or write code for you. A general rule is that TAs do not touch the keyboard. You need to be able to design, debug, and test solutions.
Honor Code and Honesty
Expectations: We teach with the assumption that the vast majority of you are honest and will abide by the honor code. We focus on creating a course where honest students can learn in the most effective environment, rather than a less effective approach that makes it harder to cheat.
What is Cheating?: The goal of this class is for you to learn, and we encourage you to participate in any activity that actually increases your learning. This includes studying with classmates, internet, etc. to better understand course concepts, proper syntax for instructions, etc. However, when it comes to actually writing your code, the work must be your own. When pair programming "your" work means the work of the two. With the exception of Lab Analysis explained above, do not show your code to another class-mate or look at or copy code form anywhere for the assigned projects, exams, etc. If you show your code to a student and that student submits that code, you are both guilty of cheating. So work together, but not on the actual writing of the assignment code. One way to judge the difference is whether what you are doing is helping you learn specific topics in preparation for doing the assignment yourself vs. using an edited/unedited version of someone else’s work to fulfill all or part of your assignment. If you are unsure about a situation, ask us.
In the zyBooks approach you submit your current program and you get to see the difference between your results and the expected results for visible test cases, so that you can debug your program. You might be tempted to just “hard-code” your program to simply output matching test-case results, without properly calculating the results as intended, in order to get partial points for matching non-hidden test cases. Doing this on a lab or exam is a form of deception and is cheating.
Why not Cheat?:
- It is wrong and dishonest. This is the most important reason. We are here to obey our Heavenly Father and do what is right.
- It is ineffective. You will do worse in the class and not learn the subject. If caught cheating you will fail and be reported to the honor code office. If not caught you will still do poorly in the class because the midterms and finals are programming exams which force you to come up with programming solutions on your own with no outside (even internet) assistance. If you cheat you will not be prepared to do well on the exams.
- It will make you miserable. You will feel guilty and fearful. You will not be able to go the temple, approach God with confidence, etc. Being dishonest hurts you and those around you.
In summary, cheating is wrong, counterproductive, and brings unhappiness. Be a person of integrity, enjoy learning, and be happy!
University Policies
Honor Code
In keeping with the principles of the BYU Honor Code, students are expected to be honest in all of their academic work. Academic honesty means, most fundamentally, that any work you present as your own must in fact be your own work and not that of another. Violations of this principle may result in a failing grade in the course and additional disciplinary action by the university. Students are also expected to adhere to the Dress and Grooming Standards. Adherence demonstrates respect for yourself and others and ensures an effective learning and working environment. It is the university's expectation, and every instructor's expectation in class, that each student will abide by all Honor Code standards. Please call the Honor Code Office at 422-2847 if you have questions about those standards.
Sexual Misconduct
In accordance with Title IX of the Education Amendments of 1972, Brigham Young University prohibits unlawful sex discrimination against any participant in its education programs or activities. The university also prohibits sexual harassment-including sexual violence-committed by or against students, university employees, and visitors to campus. As outlined in university policy, sexual harassment, dating violence, domestic violence, sexual assault, and stalking are considered forms of "Sexual Misconduct" prohibited by the university.
University policy requires all university employees in a teaching, managerial, or supervisory role to report all incidents of Sexual Misconduct that come to their attention in any way, including but not limited to face-to-face conversations, a written class assignment or paper, class discussion, email, text, or social media post. Incidents of Sexual Misconduct should be reported to the Title IX Coordinator at t9coordinator@byu.edu or (801) 422-8692. Reports may also be submitted through EthicsPoint at https://titleix.byu.edu/report or 1-888-238-1062 (24-hours a day).
BYU offers confidential resources for those affected by Sexual Misconduct, including the university's Victim Advocate, as well as a number of non-confidential resources and services that may be helpful. Additional information about Title IX, the university's Sexual Misconduct Policy, reporting requirements, and resources can be found at http://titleix.byu.edu or by contacting the university's Title IX Coordinator.
Student Disability
Brigham Young University is committed to providing a working and learning atmosphere that reasonably accommodates qualified persons with disabilities. If you have any disability which may impair your ability to complete this course successfully, please contact the University Accessibility Center (UAC), 2170 WSC or 422-2767. Reasonable academic accommodations are reviewed for all students who have qualified, documented disabilities. The UAC can also assess students for learning, attention, and emotional concerns. 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 by contacting the Equal Employment Office at 422-5895, D-285 ASB.
Note:
Instructors reserve the right to modify this syllabus as necessary in order to accommodate classroom and university needs and developments. Additionally, this syllabus outlines a template of course-wide policies for CS-142, and is subject to minor section-level variation at the discretion of the instructor.
Course Summary:
| Date | Details | Due |
|---|---|---|