Fall 2019 Syllabus
CpSc 1020, Computer Science II
Section 3, CRN 91393, 10:10 – 11:00 MWF, Lehotsky 134

Course Overview 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

Fall 2019 Books and Technologies

Suggested 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

Required On-Line Accounts (no cost to student)
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

“Programming Methodology” at zyBooks.com 
$77 (or, students retaking the course, email support@zybooks.com)
sign in or create an account at learn.zybooks.com
enter code: CLEMSONCPSC1020HochrineFall2019

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

Any good beginner C/C++ programming source could be used as a reference for this class. However, reference will be frequently made to figures, diagrams, programs & snippets of code, and exercises found in the Gaddis text book. You are not required to bring the text book to class, although some students 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
    • enum
    • math library
  • Weeks 6-15: Learning C++
    • reference variables
    • reference vs pointers
    • overload functions
    • intro to classes and objects
    • arrays & vectors
    • advanced OOP concepts
    • stacks & queues

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. If you forget to sign in, or if you are late and do not have an opportunity to sign in, you will be counted as absent.

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 on the day of a 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 taking notes. I do my best to post all notes, slides, example code, programming and homework assignments, etc. on Canvas, but there are no guarantees that they all will get posted. 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.

Laptop Policy

Laptops are required for this class. There may be in-class exercises on your laptop for which you will not get points if you do not have your laptop. Some students find it helpful to follow along in class on their laptops as I demonstrate programs in class. 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

“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 (2-3) given during the semester. Tentatively, depending on the pace of lecture, PA1 will be due around end of September, PA2 around late October/early November, and PA3 around late November/early December. 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.

Questions regarding assignments should be posted on the Piazza 1020 web page (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 no later than 11:59 pm on the date specified on the assignment handout. Late submissions will NOT be accepted and will receive a grade of zero (0). 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 80810 3:30 pm – 4:20 pm TTh McAdams 110D
  • 2: CRN 80811 4:30 pm – 5:20 pm TTh McAdams 110D
  • 3: CRN 85989 5:30 pm – 6:20 pm TTh McAdams 110D
  • 4: CRN 87162 6:30 pm – 7:20 pm TTh McAdams 110D

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

Labs for this course start the week of August 26th. More lab details and lab syllabus information will be given at the first lab meeting.

Participation (5%)

This participation grade will consist of in-class practice exercises, some on paper, some on Mimir. Attendance is required for these; a grade of zero will be given to those who are absent. There are NO make-ups for any of these exercises.

Graded In-Class Exercises (5%)

There will be some graded in-class activities, some on paper, some on Mimir. Attendance is required for these; a grade of zero will be given to those who are absent. There are NO make-ups for any of these activities.

Homework Exercises (5%)

There will be some homework exercises, probably on Mimir. They will be announced on Canvas and usually will be open for 1-2 days. It is your responsibility to check your email and/or Canvas announcements regularly; not doing so is NOT an acceptable excuse for missing a homework assignment. 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; Piazza can be really helpful for organizing and advertising study groups as well.

Tests (20% each)

There will be two tests during the semester, the first to be given tentatively on October 7th, the second tentatively on November 22nd.

Each exam will be cumulative and will cover topics discussed in both lecture and lab. 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 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; Piazza can be really helpful for organizing and advertising study groups.

Attendance is mandatory on exam days. A missed exam will receive a grade of zero (0). Once the student who finishes first hands in his/her exam and leaves, no more exams will be issued.

Final Exam (15%)

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

This semester, the final exam for section 3 will be on Tuesday, Dec 10th from 3-5:30 pm. The final exams are held in the same room as lecture.

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%
Participation 5%
Graded In-Class Exercises 5%
Homework Exercises 5%
Tests 40% (20% each)
Final Exam 15%
90 – 100 A
80 – 89.999 B
70 – 79.999 C
60 – 69.999 D
Below 60 F

Grade Appeals

Grade reports for each programming assignment are emailed to each student. After reading the text file attachment, 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. 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.