Home Syllabus Class Schedule Lab Schedule People Assignments Texts Resources

Syllabus

CPSC 1070

Programming Methodology

Fall 2019, 3 credits

Instructor: Dr. Donald H. House

Catalog Description

Introduction to programming techniques and methodology. Topics include structured programming, stepwise refinement, program design and implementation techniques, modularization criteria, program testing and verification, basic data structures, and analysis of algorithms. Credit may not be received for both CPSC 1020 and CPSC 1070. Preq: CPSC 1060. Coreq: CPSC 1071.

Introduction

This is meant to be a single course satisfying the usual sequence of courses for Computer Science majors, CPSC 1010 & CPSC 1020, in a single course. It is intended for students who have either completed the CPSC 1060 Java course, or have completed a significant programming course in High School or elsewhere. Very specifically, a primary goal of this course is to provide a thorough introduction to the Unix (i.e. Linux) operating system, the C programming language, and the C++ programming language. Since the schedule for completing all of this is quite compressed, the course will be fast paced. Students can expect to be challenged both technically and in terms of their own time management. To evaluate whether or not a student is prepared for this course, a placement quiz will be given during the second class meeting. Students satisfactorily completing this quiz will be encouraged to continue with the course. Students unable to complete this quiz satisfactorily will be encouraged to switch to the regular CPSC 1010 & CPSC 1020 sequence. Note that all students are required to register for and attend one of the Lab sessions CPSC 1071. Lab meets twice per week on Mondays and Wednesdays.

Course Objectives

Upon completing the course, successful students will be able to do the following:
  1. Plan, design, implement, test and debug, and deploy a complete software solution in a Linux environment
  2. Work confidently in the standard C programming language
  3. Work confidently using object-oriented methodologies in the C++ programming language
  4. Understand how memory is managed and accessed within a running program
  5. Classify and use common data structures including lists, queues, arrays, and stacks
  6. Identify naturally recursive problems and how to exploit recursion in algorithm development
  7. Understand references and pointers and their appropriate use in a programming solution
  8. Define inheritance and apply it in a software project
  9. Build interactive graphical programs using the SDL programming API
  10. Articulate design principles including information hiding and encapsulation

Course Outline

The following outlines the overall flow of the course. Please visit the Course and Lab Schedule pages for a more detailed day-by-day description.
  1. Introduction to fundamental programming paradigms
  2. C variables, expressions, control flow, and functions
  3. Recursion
  4. C arrays and pointer variables
  5. C structs, typedef, and union
  6. C file I/O
  7. Stacks, queues, and linked lists
  8. SDL interactive graphical interface
  9. Scanline graphical algorithms
  10. Migration from C to C++ and object oriented programming
  11. Call by reference vs. call by value, reference parameters
  12. Constructors, destructors and memory management in C++
  13. Function, method and operator overloading
  14. Move semantics
  15. Subclasses and inheritance
  16. Polymorphism and templates
  17. C++ standard template library (stl)

Changes

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 announcement on Piazza.

Projects, Exams and Grading

This will be a project oriented course, with programming assignments done on the computer every two or three weeks. In addition, the laboratories will include a number of graded assignments that are to be completed in the lab, and many weeks there will be a short quiz at the beginning of class. The course will have two midterm exams and a final exam.

The grade you earn in this course is the grade that will be assigned. Clemson’s grading system is described under Academic Regulations in the online course catalog. Extra credit opportunities, as described in problem statements, may arise throughout the semester. No extra credit opportunities will be offered once regular classes end.

Grading Rubric:

Method Qty Total Points Percent
Class, online and lab participation10010%
Programming projects630030%
Laboratory problems1020020%
Quizzes1010010%
Midterm Exams 1 and 2220020%
Final Exam110010%
Total1000100%

Participation:

The participation grade will be based on the subjective opinion of the instructor, taking into account class and lab attendance, participation in discussions, and activity on the class piazza forum.

Late work:

Late work will incur a 10% penalty per class session that it is late. Assignments will not normally be accepted beyond one week late, and will incur a grade of F. Since the late penalty is stiff, it will be a good idea to implement your projects in stages so that you will always have something to show even if you do not fully complete an assignment.

Programming projects:

For each programming project you will turn in a directory containing 1) a text README file containing a written description of your project and any special features or techniques you implemented, 2) your source code, 3) a Makefile, 4) any parameter or data files necessary to run your program. Your code must be compilable and tested under the School of Computing Linux environment. In order to be eligible for credit, submissions must conform to each of these requirements.

Exams:

If an unavoidable time conflict exists, students may request to take an exam prior to the examination date. This request must be made at least one week prior to the scheduled examination date via email. The request may or may not be granted based on the instructor's judgement. Students who do not have such a request approved and are not in attendance on the examination date may be given an opportunity to take a revised version makeup exam at a different time only under exceptional circumstances, such as family or medical emergencies. Final examination conflicts must be resolved by the mid-semester point.

Regrade Requests:

You may request a re-grade of any graded material using the Regrade Assignment Box on Canvas. Within a single .zip file, include a PDF that includes detailed information about the request along with the material itself (scanned in, if needed), within one week after the instructor returns the graded material, regardless of whether the student is in class. If graded material is returned on a Wednesday, then you have until the following Wednesday to submit a regrade request. The instructor will completely regrade the assignment by the end of the semester; please be aware that a regrade request might result in a lower overall grade.

Attendance

Attendance is taken in this class. Students do not need to notify the instructor in advance of a planned absence, except in cases of extreme or emergency circumstances that will result in you missing more than one week of classes. If you miss a class, you must first consult with a classmate about missed material prior to seeking assistance from the Lead TA, and finally the instructor.

Late Class Policy

Your instructor will make every effort to be in class on time, or to inform you of any delay or cancellation. In the unusual event that he should not arrive in class or send word via Piazza.com by 15 minutes from the class start time, the class is officially cancelled.

Inclement Weather Policy

In case a scheduled class meeting is cancelled due to inclement weather, any assignments due or examinations scheduled for that day will move to the next regularly scheduled class meeting, unless otherwise announced by the instructor via Piazza.com.

Laptop and Mobile Device Policy

Please silence your mobile devices before class. Do not text or play games during class. If you wish to use your laptop during lecture, you must get the instructor’s written permission. Please exercise good judgment since you may not only distract yourself, but also people seated near you. If you use your laptop or mobile device in such a way that it distracts others (e.g. playing games), you will be asked to leave.

Recording Devices

Lectures may not be recorded without the written permission of the instructor and you do not have the instructor’s permission to use notes from lectures for commercial lecture note purposes.

Collaboration Yes, Plagiarism No

In this course, we want to encourage collaboration and the free interchange of ideas among students and in particular the discussion of homework problems, approaches to solving them, etc. However, we do not allow plagiarism, which, as commonly defined, consists of passing off as one's own ideas, words, writings, etc., which belong to another. In accordance with this definition, you are committing plagiarism if you copy the work of another person and turn it in, unacknowledged, as your own, even if you should have the permission of that person. Plagiarism is one of the worst academic sins, for the plagiarist destroys the trust among colleagues without which research cannot be safely communicated.

Copyright

The materials provided in this course are copyrighted. They are intended for use only by students registered and enrolled in this course and only for instructional activities associated with and for the duration of the course. They may not be retained in another medium or disseminated further. They are provided in compliance with the provisions of the Teach Act. Students should refer to the Use of Copyrighted Materials and "Fair Use Guidelines" policy on the Clemson University website for additional information: http://libguides.clemson.edu/content.php?pid=84458&sid=627695.

Disability Accommodations

Students with disabilities requesting accommodations should make an appointment with Dr. Margaret Camp (656-6848), Director of Disability Services, to discuss specific needs within the first month of classes. Students should present a Faculty Accommodation Letter (FAL) from Student Disability Services when they meet with instructors. Accommodations are not retroactive and new FALs must be presented each semester. If a student experiences a new disability, industry, or hardship event, he or she must notify me within one week of their academic work being impacted. I am happy to provide reasonable accommodations for students with disabilities or injuries as long as I receive the appropriate and completed documentation.

Anti-DiscriminationPolicy

Clemson University is committed to a policy of equal opportunity for all persons and does not discriminate on the basis of race, color, religion, sex, sexual orientation, gender, pregnancy, national origin, age, disability, veteran’s status, genetic information or protected activity (e.g., opposition to prohibited discrimination or participation in any complaint process, etc.) in employment, educational programs and activities, admissions and financial aid. This includes a prohibition against sexual harassment and sexual violence as mandated by Title IX of the Education Amendments of 1972. This policy is located at http://www.clemson.edu/campus-life/campus-services/access/title-ix/. Mr. Jerry Knighton is the Clemson University Title IX Coordinator. He also is the Director of Access and Equity. His office is located at 111 Holtzendorff Hall, 864.656.3181 (voice) or 864.565.0899 (TDD).

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. In instances where academic standards may have been compromised, Clemson University has a responsibility to respond appropriately and expeditiously to charges of violations of academic integrity. Please refer to the graduate academic integrity policy, approved March 26, 2007 by the Provost's Advisory Council, at http://www.clemson.edu/academics/academic-integrity Each graduate student should read this policy annually to be apprised of this critical information.