CpSc 1020
Computer Science II
Fall 2021 Syllabus
Section 010, CRN 80365, 11:15 – 12:05 MWF, G01 Kinard

Course Description and Objective

Course catalogue description:
Continuation of CPSC 1010. Continued emphasis on problem solving and program development techniques. Examines typical numerical, nonnumerical, and data processing problems. Introduces basic data structures.(4 Credits, 3 Contact Hours)

Credit may not be received for both CPSC 1020 and 1070.

Preq: CPSC 1010 or CPSC 1110 with a C or better.

Coreq: CPSC 1021.

The objective of this course is that you will be familiar with the basic features of the C++ programming language and will be able to write software to solve different computing problems using C++. By the end of the semester, you should be able to do the following:

  • Plan, design, implement, test and debug, and deploy a complete object-oriented software solution in a Linux environment
  • Define inheritance and apply it in a software project
  • Describe how references allow for objets to be accessed in multiple ways
  • Classify and use common data structures including lists, vectors, arrays, etc.
  • Articulate design principles including information hiding and encapsulation

Course Delivery Plan

Class will be in person this semester. Attendance for each class meeting will be expected and taken. If there are any classes where in person meetings are not possible, Zoom will be used to remotely conduct class. (There is a Zoom link in Canvas on the left navigation bar.)

The rule of thumb with computer science classes is that for every hour of lecture, 2-3 hours of out-of-class work is expected in order to understand and retain the material. With that in mind, the content for each lecture will be provided on Canvas as pre-class asynchronous instruction that students will be required to review prior to the class meeting. Lectures will consist of review using recall questions to gauge understanding of the material as well as presentation of new concepts and at times, in-class exercises.

On occasion, in-class exercises may involve peer-instruction where an exercise or question will be presented and students will be given time to formulate their answers and then work together to solve the exercise or question. The group discussion often results in students explaining the concepts to their teammates who may have answered it incorrectly at first. Then a full class discussion will take place providing additional modeling of the concepts and further clarification. Studies have shown that students are more satisfied, and understand and retain the material better when peer instruction is involved. Other classes may consist of other active learning activities, which also serve to engage students in the material.

We will use the following technologies:

  • Canvas for all course materials and all exams. Exams will require Respondus Lock-Down Browser.
  • There may be small quizzes and/or class exercises using Mimir. Mimir allows for short programming exercises as well as multiple choice, T/F types of questions.
  • Piazza will be used for class discussion board conversations and questions/answers.
  • MS Teams will be used for remote office hours whenever the instructor/TA is available online.
  • Kahoot will be used for in-class participation quizzes.
  • Attendance will be taken daily using checkin.cs.clemson.edu.
  • Lab and lecture programs will be submitted using handin.cs.clemson.edu.

In-person office hours on Fridays will be from 12:30-1:30 in my office, or at other times by appointment. Live meetings may be conducted via Teams with the instructor for lecture related questions or the lab TAs for lab related questions for those who cannot meet during the regular Friday office hours.

Student Requirements and Expectations

Students are required to:

  • have a functioning laptop computer with a webcam and microphone for this course. Your laptop should be running Windows 10 or MacOS X 10.14 or later. You are also strongly encouraged to have a working set of headphones with microphone for engaging via remote technologies, especially in situations where privacy may be warranted (such as discussing course grades with your instructor).
  • have a reliable broadband internet connection so that you may engage in the remote delivery components for this course.

Students are expected to:

  • attend all classes during designated times whether in person or via Zoom
  • actively participate in course interactions such as discussions
  • log into Canvas at least once a day to check for announcements and other materials being added to modules, which might include lecture materials as well as homework and quiz information
  • communicate with the instructor, TAs, and each other as a learning resource

Fall 2021 Books and Technologies

Required Text
Starting Out With C++ With Early Objects, 9th Edition
Tony Gaddis, Judy Walters, and Godfrey Muganda
Pearson Publishers
ISBN-13: 978-0134379319
ISBN-10: 0134379314

ISBN-10: 9780134379371 for the ePub version, a rentable version can be found at VitalSource and Chegg for $34

Required Technologies and On-Line Accounts
Canvas for course materials, announcements, exams

putty or terminal for connecting to SoC computers for program development and testing

Zoom for occasional live class meetings

MS Teams for remote office hours

Kahoot for in-class participation quizzesbr>
Mimir account for on-line practice and exercises
more information coming…

Piazza account for on-line class questions and communication
more information coming…

Recommended For Additional Practice and/or Resources
HackerRank.com

cplusplus.com

C++ Style Guide

“Programming Methodology” at zyBooks.com 
$58 (or, students retaking the course, email support@zybooks.com)
sign in or create an account at learn.zybooks.com
enter code: CLEMSONCPSC1020KittelstadFall2021
ISBN-13: 978-1-394-08346-6

Unix in a Nutshell, 4th Edition
Arnold Robbins
O’Reilly Media
ISBN-13: 978-1565920019
ISBN-10: 1565920015

Many figures, diagrams, programs & snippets of code, and exercises found in the Gaddis text book will be used in class materials. Any good beginner C/C++ programming source could be used as additional reference for this class. You are not required to bring the text book to class, although some students may find it useful to do so.

Tentative Topical Outline (the order of some topics may change)

  • Weeks 1-3: C review
    • pointers
    • structs
    • malloc/calloc
    • linked lists
    • 2D array
  • Weeks 4-5: C to C++ Transition
    • input/output
    • namespace
    • file I/O
    • formatting output
    • data type (new C++11)
    • typecasting
    • const vs #define
    • char vs string
  • Weeks 6-15: Learning C++
    • reference variables
    • reference vs pointers
    • overload functions
    • intro to classes and objects
    • arrays & vectors
    • advanced OOP concepts

Attendance

Studies have found that the single most important factor that contributes to success in a course is class attendance. With this class, like others, each lecture builds upon preceding lectures. Missing even a single class can make it difficult to keep up with the course material. Regular and punctual attendance at all class sessions is required and expected. Roll will be taken daily via checkin.cs.clemson.edu. If you do not sign in, you will be counted as absent.

Attendance is not recorded for a grade; however, there may be assignments or in-class exercises that must be completed during the class meeting. If you do not attend class in person or online, you will not be able to complete the assignment. Being absent, excused or not, does not change the responsibility for material covered during the class, assigned work, announcements, and/or assignment modifications. For University-sponsored events, students must provide written notice prior to the event. For all other excused absences, students should provide to the instructor as soon as possible, written documentation from an acceptable outside source (e.g., school administrator or physician).

Attendance is mandatory on exam days. No make-up exams or quizzes will be given. If you arrive late (or log in late) to the quiz or exam, you will be allowed to participate, but will not be given additional time to compensate for being tardy.

If I am more than ten (10) minutes late, you should assume that I am dealing with an emergency and will not make it to class. Check your email in those circumstances for further explanation.

In the event the university should cancel classes, inclement weather, power outage, etc., any exam that was scheduled will be given at the next class meeting unless contacted by the instructor. Any assignments due at the time of the class cancellation will be due at the next class meeting unless contacted by the instructor. Students will be notified of extension or postponement of assignments or exams through Canvas.

Lab attendance each week is mandatory.

Lecture Notes, Assignments, Homeworks

You are responsible for keeping up with the lecture material and taking notes when needed. Course materials will be posted in the modules on Canvas. My notes and slides are only references. It is your responsibility to take notes and ask questions if you need clarification.

Homeworks will be posted on Canvas.

Graded Mimir assignments will be accessed through a link on Canvas. Ungraded Mimir assignments (those for practice but not graded) can be accessed directly on Mimir. When an assignment is created on Mimir, an email is automatically sent to you from Mimir. It is your responsibility to make sure these emails are not overlooked.

If you miss a class, you are responsible for the material and/or announcements covered during the missed class. Check your email and Canvas announcements daily. “I didn’t see this until today” is not an acceptable excuse for missing an email/announcement.

Grading

You are responsible for keeping track of your grades. I will post grades on Canvas, but Canvas may distort the way that the grades are weighted until the very end of the semester when all grades are entered. Therefore, you will need to do so yourself in order to have an accurate picture of your grade in the class.

Any emails regarding your grade must be sent from your Clemson.edu email address. I cannot discuss grades with an unverified email without risk of violating FERPA laws.

Laptop Policy

A functioning laptop is required for this class. Any Zoom class meetings also require a webcam and microphone. A reliable broadband internet connection is required for students engaging in any of the remote delivery components for this course. The tests and exams will be require a laptop as well.

Additionally, there are rules with regards to electronics in class that you are required to observe not only as a courtesy to your classmates but also to assure that you have the best opportunity for a positive learning experience:

  1. Laptop, phone, and alarms MUST be set to mute or off before the start of class.
  2. All social media sites, games, etc. MUST be turned off during class. If you engage in unauthorized communication or entertainment during class (e.g. surfing the web, instant messaging, playing games, etc.), you will be asked to close your laptop. If this activity occurs during an exam or quiz, it constitutes academic dishonesty (see following).
  3. The use of earphones is prohibited during class.

Academic Integrity

Unless specified otherwise, all work for this course must be completed on your own. It is acceptable to discuss topics you do not understand with other students in the class, but do not discuss the specifics of any assignment or share assignments. Any specific questions regarding the assignment should be directed to the instructor or TA for the course.

“As members of the Clemson University community, we have inherited Thomas Green Clemson’s vision of this institution as a “high seminary of learning.” Fundamental to this vision is a mutual commitment to truthfulness, honor, and responsibility, without which we cannot earn the trust and respect of others. Furthermore, we recognize that academic dishonesty detracts from the value of a Clemson degree. Therefore, we shall not tolerate lying, cheating, or stealing in any form.”

Academic integrity is taken very seriously. The University’s Academic Integrity Policy is here. Unless otherwise instructed, you are expected to work independently on projects and labs. The instructor may use automated tools to look for similarities in code which could indicate plagiarism. Instances of copying or sharing, or cheating in any way will result in an academic dishonesty charge, which can lead to an F in the course or expulsion from the university. Each student is responsible for protecting his or her files and work from access by others. Work that is essentially the same and submitted without proper attribution is considered to be a violation of academic dishonesty policies by all those submitting the work, regardless of who actually did the work.

Lack of knowledge of the academic honesty policy is NOT a reasonable explanation for a violation.

Publicly available sources for code or other material, in small amounts, may be freely used if appropriately attributed. A good rule of thumb: when in doubt about whether the use of small snippets of code not your own in a programming assignment or lab assignment, is allowed; or other questions related to assignments or the academic honesty policy, ASK the instructor or lab ta.

For this course, it is considered cheating to do any of the following:

  • discuss in detail the code in your program with another student (other than the instructor or lab TAs)
  • showing, sharing or using code between your program with another student or any other unauthorized source, either modified or unmodified (each student is responsible for protecting his or her files from access by others)
  • use reengineering tools
  • submit work of others, from the Internet or any other source, even if attributing the work to others
  • use unauthorized aids such as the textbook or other individuals on exercises, quizzes, or exams

If it is determined that you have cheated the following will be the consequences:

  • If you choose to admit your mistake you will receive a negative one hundred (-100) for the assignment. This basically is the equivalent of zeros on two assignments.
  • If you feel you have not violated Clemson’s academic integrity policy, it is your right to ask for a hearing. If your case goes to a hearing and you are found to be in violation of the university’s academic integrity policy you will receive an F in the course regardless of your final grade, even for first offenders.

Programming Assignments (20%)

There will be several programming assignments (probably 2) given during the semester. Typically, the first assignment is due some time around mid-late October; and the second one is due towards the end of November. Details about the assignments will be announced and posted on Canvas. Unless otherwise explicitly stated, assignments are to be your own individual, unaided (except by the instructor or the TA’s) work, and not to be shared with anyone.

Please be sure to follow the instructions given in the programming assignment specifications. Failure to follow instructions will result in a deduction of points, e.g naming of files, testing programs on SoC servers, etc. Also, note that programs submitted MUST COMPILE ON THE CPSC COMPUTER SYSTEM for any points related to functionality to be awarded. If the program does not compile, there may be some points available for code formatting and possibly other small items that are required. A non-compiling program usually is worth AT MOST 10-20 points. It is better to submit a partially working program than a program that does not compile.

Questions regarding assignments should be posted on Piazza (be sure to choose the category corresponding to assignments). Most emailed questions that can be posted/answered on Piazza will likely not be responded to via email. Also, depending on the influx of last minute questions, I may not be able to answer all questions sent within the 24 hour period before the assignment is due.

Please get started early on assignments, and take advantage of the TA’s office hours that are offered.

Assignments are to be turned in on the SoC’s handin page at handin.cs.clemson.edu no later than 11:59 pm on the date specified on the assignment handout. Late submissions will be accepted but points will be deducted according to the formula (3n)3 where n is the number of days late. Example: assuming assignments are due on Wednesday, the point deduction is as follows:

Max points possible Day received Days late
100 Wed 0 (due date)
73 Thu 1 day late
0 Fri 2 days late

 

NO emailed assignments will be accepted. It is best to complete and submit an assignment early rather than risk last-minute complications.

IMPORTANT:
It is your responsibility to check and double check the files you submit for a programming assignment or homework. Checking the files will allow you to determine that you have submitted all required files and that the files are in working order. Unless otherwise specified, you will use the SoC’s handin system to submit all Lab assignments and programming assignments. Handin allows you to open the files after your submission; therefore, you are required to check your files. If you determine that there is a problem with any of your files you will need to replace the bad file with a good file. Since this process will take time you should NOT wait until the last minute to hand in your files.

During the grading phase of a programming assignment, if a file is missing or corrupt you will receive a 0 on the assignment/homework. There will be no opportunity to resubmit the file.

Lab (10%)

The lab sections for this semester are:

  • 1: CRN 80738    8:00 am –   8:50 am TTh 110D McAdams
  • 2: CRN 80739    9:30 am – 10:20 am TTh 110D McAdams
  • 3: CRN 85002  11:00 am – 11:50 am TTh 110D McAdams
  • 4: CRN 85837  12:30 pm –   1:20 pm TTh 110D McAdams

Unless otherwise instructed by your lab ta, attendance at every lab session is expected and REQUIRED.

Labs for this course should start the week of August 23rd. An announcement will be made confirming this. More lab details and lab syllabus information will be given at the first lab meeting.

In-Class Exercises and Participation (10%)

There will be some in-class activities and quizzes: some will be peer instruction activities, some will be on Mimir, some on Canvas. Also, Kahoot will be used for in-class participation questions. Many times, these are recall types of questions making sure that you are keeping up with the material posted on Canvas prior to coming to class. Attendance is required for these. A grade of zero will be given to those who are absent or do not complete them. There are NO make-ups for any of these activities. The three lowest grades will be dropped, however, so if you miss one or two, those will be the grades dropped.

Homework Exercises (10%)

There will be some homework exercises, probably on Mimir. When an assignment is placed on Mimir you receive an email from Mimir. Make sure you do not delete any notices from Mimir. It is your responsibility to check Mimir often to determine if you have an assignment and to ensure you have completed the assignment before the due date. They usually will be open for 1-2 days. If it is a Mimir assignment, once the window closes, you will still be able to see the homework assignment but will not have an opportunity to do the homework assignment for a grade.

These are the kinds of exercises that you are welcome to work on together, as sometimes working in groups is beneficial in understanding the concepts. I recommend putting together study groups and working together for these homework exercises as well as studying for tests; the Piazza discussion forum can be really helpful for organizing and advertising study groups as well.

Pre-Assessment Quiz (5%)

The pre-assessment quiz will be given during the second class meeting in class using Canvas, and will require Respondus Lockdown browswer.

Tests (15% each)

There will be two tests during the semester given on Canvas, tentatively given late Sep or early Oct for the first one and late Nov for the second one. The exams will use Respondus Lockdown browswer.

These Canvas exams are prescheduled. If you are late starting you will not be given extra time to complete the exam.

Each exam will be cumulative and will cover topics discussed in both lecture and lab. I do not teach to the exam; I ask questions related to the material taught expecting that you will be able to apply what was taught to answer the questions. Writing exams is time intensive, and therefore, I do not do a formal exam review. I try to post an outline of the topics that have been covered. It is suggested that you review all posted notes and notes that you have taken, posted slides and materials, and example code posted or in the book. If you attend class, practice with code outside of class, and ask questions regularly, along with reviewing the material, you should have no problem with the exams. I recommend putting together study groups; the Piazza discussion forum can be really helpful for organizing and advertising study groups.

Attendance is mandatory on exam days. A missed exam due to an unexcused absence will receive a grade of zero (0). Because writing exams is time intensive, I do not give makeup exams. If you must miss an exam for a university approved event, you must inform me at least one week in advance and you must have a university issued letter. If you miss an exam due to medical issues, you must contact me prior to or on the day of the exam. Upon recovery, we will discuss a plan to make up the exam.

If the University cancels classes on the day of a scheduled exam, the exam will be rescheduled.

Final Exam (15%)

The final exam will be cumulative and is required of all students.

This semester, the final exam for section 010 will be on Tuesday, Dec 7th from 8-10:30 am.

Grading

Performance in this course will be evaluated by programming assignments, lab, in-class participation and exercises, homework exercises, and exams, computed as follows:

Grading Grading Scale
Programming Assignments 20%
Lab 10%
In-Class Exercises & Participation 10%
Homework Exercises 10%
Pre-Assessment Quiz 5%
Tests 30% (15% each)
Final Exam 15%
90 – 100 A
80 – 89.999 B
70 – 79.999 C
60 – 69.999 D
Below 60 F

These percentages are tentative. I reserve the right to adjust the percentages within each category by up to 20%.

Grade Appeals

Grade reports for each programming assignment are provided on Canvas. After receiving the grade and reading the comments in the grade report, if you have a grade dispute, hold off on emailing me for 24 hours; no grade will be discussed with students within 24 hours after the graded work has been returned to students. After that “cool off” period, any grade challenges regarding assignments, (or exams), etc. must be emailed to the instructor with the subject “1020 PA# or exam# regrade request”, with detailed justifications, within one week of the date the grades are available. After the one week period, no re-grade requests will be entertained. In most cases, re-grade requests for assignments will be performed towards the end of the semester if a change in the assignment grade would facilitate a change in the overall course grade. Please note: for re-grading of assignments, the instructor will completely re-grade the assignment which could result in a lower overall grade.

Syllabus Modifications

Lecture topics are subject to change. Course delivery is subject to change as well. The course syllabus is a general plan for the course. Deviations announced to the class by the instructor may be necessary. Deviations will be announced verbally in class and posted via an announcement on Canvas.