CS 2040: Programming in C and C++, Spring 2022

Instructor: Rob Hasker (414-277-7326)

Drop-in times (office hours): See my home page: https://faculty-web.msoe.edu/hasker/

Textbook: Programming in C++ with zyLabs, F. Vahid and R. Lysecky, zyBooks, 2021, ISBN 979-8-203-95469-5
Programming Ruby - The Pragmatic Programmer's Guide, Dave Thomas and Andy Hunt, 2001; available at http://ruby-doc.com/docs/ProgrammingRuby/

Course Description:

This course introduces students to additional scripted, procedural, and object-oriented programming languages including C and C++. Students are introduced to the concepts of compilation, memory management, linking, low-level types, efficient implementation of objects, and the Standard Template Library. Students may not receive credit for both CS 3210 and CS 2040
Prereq: CS 2852

Format: 3 lecture hours, 2 lab hours, 4 credits

Course Outcomes: On successful completion of this course, the student will be able to

Grading

  Percentage  
Labs  35%
Quizzes & exercises:  25%
Midterm:  20%
Final Exam:  20%
Total: 100%

The MSOE grading scale will be used, though higher grades may be awarded to individual students if it increases fairness. In addition, successfully demonstrating mastery of course outcomes is a prerequisite for a passing grade. This includes being successful on the final exam and, in some cases, completing assignments even if worth zero points.

Communication

Most materials will be available on my class web site, https://faculty-web.msoe.edu/hasker/cs2040-c/ or in Canvas. For instance, quizzes will be in Canvas but links to notes will be on the website. I will also communicate to the class on Teams; it is critical you enable notifications for the Teams entries for this class. Many announcements will be made that way and no other. I may also use email at times. I expect you to check for electronic communications at least once a day.

My office hours are listed as "drop-in" times to emphasize that you do not have to have an appointment to come see me. You can come other times as well! I am always glad to help students with challenges. I do expect you to have spent a few minutes checking for answers on the class website and Teams before requesting help, but absolutely would rather you ask for help than spend hours trying to find solutions on your own.

Labs, Assignments, and Quizzes

Lab solutions which do not run or which do not produce some correct output will be worth 0 points. However, you can get partial credit for partially working solutions. Estimate how long the lab will take, and contact your instructor if it takes much longer!

Unless otherwise announced, late solutions will be penalized 2% per day for the first week. Solutions submitted more than one week late will be worth zero points unless there is advance arrangement due to extenuating circumstances. Unless you have written permission, all assignments must be submitted before Monday of finals week. Note that quizzes and exams have a due date and you will not be able to submit after that due date.

Assignments are individual unless we explicitly state otherwise. It is OK to look at another student's code with them to help them fix an error, but it is not OK to have a copy of another student's code at any time or in any form. Note that making a repository public enables cheating and violates campus policy. Electronic tools will be used to identify plagiarism, and students guilty of either copying or "loaning" out their code will be penalized.

Code will be graded for both correctness and meeting standards. The most frequent mistake is in using (hard) tab characters in source files - this is a practice that is strongly discouraged in industry, and it makes your code harder to grade. Configure your IDE to insert spaces instead of tabs.

If you are not using a private repository for your own assignments yet, it's time to start! A file on a single computer should be considered "lost" since machines frequently fail. You can create free, private repositories on BitBucket, GitHub, and other servers.

Students are expected to use the provided VM for C++ development.

Missed quizzes cannot be made up, but at least one of the lowest quiz or exercise scores will be dropped. Many quizzes will be online with flexible times. Exams will typically be scheduled during class time.

Attendance

Do not skip class! If you do happen to miss, be sure to check for new materials and get the notes you missed from a friend before the next class period. You are responsible for anything missed! If you need to be excused from class for MSOE activities or religious observances, let me know in advance. If you're sick, it's obviously not a good idea to come to class. This includes days on which there are exams; just be sure to contact me as soon as you can get to a phone or computer.

Using phones and laptops during class to check social media, write papers, etc. is a form of missing class!

Strongly consider taking hand-written notes for this class. The slides omit many details on purpose. In many cases I will write code on the screen, and it is often much easier to track edits by hand than reproduce it with a keyboard. Note the campus printers will easily scan documents so you can organize your notes electronically.

Do not record or distribute video or audio of lectures without my permission.

When an exam is missed, I will determine whether to give you a make-up exam or increase the weight of the other exams. All students must take the final exam to receive a passing grade in the course unless the student has been excused in advance.

MSOE is committed to the health, safety, and well-being of all members of our community. Since classrooms and laboratories are constrained spaces where students and faculty are required to congregate for long periods of time and where social distancing is difficult to achieve, students, faculty, staff and guests of the university must wear a facial covering in all classrooms and laboratories at MSOE.

Failure to wear a facial covering in class or laboratory will result in your faculty member requiring you to leave class and not return until you have secured a facial covering for yourself. Failure to comply with your faculty member’s instructions will result in immediate referral to and action from the Office of the Dean of Students. Failure to comply with this policy will be handled according to the Student Code of Conduct and may result in sanctions, up to and including expulsion. The university strongly encourages all students to keep an extra and clean facial covering on their person at all times and strongly discourages students from borrowing and lending others their facial coverings.

If you receive a positive COVID-19 test result; or are symptomatic of COVID-19; or are an unvaccinated student who has been a close contact of an individual who is symptomatic or positive, please login to my.msoe.edu and click on the COVID-19 Report Form located on the home page. Please do not physically come to campus if you are ill or suspect you may be ill. MSOE is committed to your education and your faculty will work to support your learning should you need to isolate or quarantine.

For students with documented disabilities, chronic medication conditions and mental health concerns: MSOE provides services to make reasonable accommodations available. If you are a student who requires or anticipates the need for accommodations, please contact Student Accessibility Services Office at 414-277-7281, by email at moureau@msoe.edu, or in person at K250 to discuss appropriate accommodations and eligibility requirements.

Course Topics