CSC-1710 Introduction to Computer Programming

Spring 2024
Instructor: Roger Shore Class Schedule:
Office Location: Couch Hall 153 MWF 9:15AM-10:25AM CSC-2342
Telephone: 841-9031 TTh 7:50-9:30AM CSC-4210
Office Hours: MWF 1:00-3:00PM TTh 9:45-11:25AM CSC-4820
Th 1:30-2:30PM
E-Mail: rshore@linus.highpoint.edu Web site: linus.highpoint.edu/~rshore

Course Description: An introduction to the fundamentals of programming using a high-level, object oriented language such as C. Emphasis will be placed on syntax and semantics of the language to write correct, efficient, and easily modifiable programs. Topics include but not limited to assignment statements, conditional and iterative control structures, functions, simple data structures, and software development.

Prerequisites: none

Course time expectation/week: This is is a four hour course. According to SACs, our accrediting body, we are required to meet 200-210 minutes per week for 15 weeks. In addition, you are expected to work on projects and assignments for at least 8 hours (480 minutes) outside of class per week.

Course Materials:

  1. D.S. Malik, C++ Programming - Program Design Including Data Structures, Eight Ed., Cengage Learning - 2017 ISBN 978-1-337-11756-2
  2. An account to access the department equipment. The account can be used to access any of the machines in CH-147, CH-149, or remotely. I will develop, implement, and test all C++ programs for this class on an alienware machine. The C++ in this course will be generic. Programs written in this class should work on any machine with any C++ compiler.
Course Objectives: After successfully completing this course, a student should be able:
  1. To describe hardware and software components in a computer system (PC or mini-computer).
  2. To demonstrate a basic competency of the Linux(UNIX) operating system command line tools and utilities in a multi-user networked environment.
  3. To apply formal problem solving techniques to create algorithms that solve simple problem with a program.
  4. To write logically correct, efficient, and easily modifiable programs using a procedural programming language (C++ language) on an PC or mini-computer.
  5. To design, implement, test, analyze, and debug programs that use basic computation, simple I/O, functions with/without parameters, and conditional and iterative control structures.

Programming Assignments:The course is primarily a programming course that focuses on a top-down design with step-wise refinement to develop a solution to a problem. You will be introduced to pseudo-code or flowcharts to describe the logic at each level of refinement. You are expected to work individually on each assignment unless noted otherwise. Any two programs submitted by different persons but obviously written by the same individual will both receive zeros. Each program will be graded based 20 points using the following criteria.

  1. STYLE 30%
    1. Indenting and layout. Is the program readable? Does indenting help debugging and reading? Are parts of the program clearly labeled?
    2. Identifiers. Are the identifiers meaningful and mnemonic? Do they describe their purpose?
    3. Documentation/Comments. Is the program reasonably commented? Does the commenting help both the programmer and the grader? Could another student in the class figure the program out?
    4. Attractive output?
  2. PROGRAM 70%
    1. Algorithm. Is the program sensible? Does it solve the problem in a reasonable manner?
    2. Modularity. Does the program take advantage of subroutines and functions? Are its separate parts easy to isolate for testing and debugging?
    3. Working. Does the program work? Does it fulfill the problem description, or does it solve some other problem? Is it written in a way that it lets shortcomings be recognized and fixed?
    4. Use of required commands?
  3. Late Penalty:Programming assignments will have due dates. You will automatically get an extension of 7 days if you miss the due date. The penalty will be 1 point per day late. No program will be accepted after 7 days of the assigned due date.

Requuired Lab time expectation/week: We have observed that students that utilize the lab have greater success in computer science classes. Therefore the department has established 10-12 labs to introduce topics. Labs are 2 hours in length scheduled one per week. I would also encourage you to utilize the CH-149 computer lab and CH-147 classroom to complete all programming assignments. Lab information:

Course Policy:
  1. Attendance: Attendance will be taken daily at the beginning of class. You are expected to be present in every class meeting. If absent from class, you are responsible for all lectures, in-class exercises, assignments, and handouts. Caution: Being absent from class does not change the due date of assignments.
  2. Grades: Your final grade will be determined as follows:
    Component 6 Programming Assignments Labs / Quizzes / Class Participation
    3 Major Tests
    Cumulative Final Exam Total
    Weight
    20%
    15%
    45%
    20%
    100%
    Range
    93-100
    90-93
    87-90
    83-87
    80-83
    77-80
    73-77
    70-73
    67-70
    63-67
    60-63
    0-60
    Grade
    A
    A-
    B+
    B
    B-
    C+
    C
    C-
    D+
    D
    D-
    F
    You must score at least the minimum of a category to be given the associated grade, i.e. an average of 80 is a B- not a C+.
  3. Make-Up test will not be given. No make-up test will be given unless arrangements have been made prior to the day of the test. If you miss a test your final grade will be used in place of the missed grade. This means the percentage of the final exam will increase. If you miss the final exam, you will receive an F for the course.
  4. In-class worksheets, quizzes, and non-programming assignments must be completed on the assigned date and cannot be made-up. NOTE: 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.
  5. Homework: This will be assigned frequently. Some assignments will take minutes to complete others will take days. Opportunity for homework questions is given at the beginning of each class. Homework may be collected and graded occasionally.
  6. Academic integrity:This is taken very seriously at HPU. Unless otherwise instructed, you are expected to work independently on projects and tests. You are responsible for protecting your files and work from access by others. Instances of copying or sharing, or cheating in any way will result in an academic dishonesty charge, which can lead to an F for the assignment and maybe the course. The University Honor Code states: "Every student is honor-bound to refrain from cheating, collusion, plagiarism, . . .to confront a violation, . . . to report a violation of the University Honor Code."
  7. Classroom etiquette:Most of the following are rules with regards to electronics in the class that you are reuired 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.
  8. Lab etiquette:
  9. Honor Code All students are expected to follow the University Honor Code, full details can be found in the Student Handbook. All academic work should be completed with the highest level of honesty and integrity.
  10. Students with Disabilities: Students who require classroom accommodations due to a diagnosed disability must submit the appropriate documentation to Disability Support in the Office of Academic Development, 4th Floor Smith Library. Student’s need for accommodations must be made at the beginning of a course. Accommodations are not retroactive.
Course Topics:
  1. Introduction
    1. Basic computer hardware
    2. Information about available computer equipment on campus
    3. Access to the computer equipment
    4. Login procedures
  2. Internet and the High Point Campus Network
    1. General Layout
    2. Applications
  3. The Text Editor (vi or vim, xwpe, gvim)
  4. Linux (UNIX)
    1. General Layout - tree structure
    2. General Purpose Commands
      - ls, cp, mv, rm, mkdir, rmdir, locate, talk, ...
    3. Advanced Commands
      - grep, more, cut, pipes, ...
  5. C Programming Language Concepts
    1. Program layout (Comments, identifiers, keywords)
    2. Data types - floating point, integer, character, string, enumeration
    3. Streams and File I/O (standard, redirection) - I/O
    4. Assignments and expressions
    5. Procedures and functions
    6. Sequence control
    7. Loop control
    8. Exceptions
    9. More on types
    10. I/O Library
    11. C++ topics
  6. Programming Topics
    1. Formula based - given a formula, prompt user for input, process data, output results.
    2. Pixel processing - blend two pixels
    3. Factorial, Fibonacci, and other sequences
    4. Convert a color image to a black and white image
    5. Create a PPM image
    6. sorting: bubble, selection, shell techniques
    7. searching: sequential and binary