CSCE 2004
Foundations I Syllabus
Spring 2011

Web Page:


Gordon Beavers
Office: 504 JBHT
Office Hours: MTWR 3:30 - 4:30 or by appointment
Phone: 575-6040
Email: gordonb(at)
Web Page:

Lab Instructor:

Daniel Apon
Office: JBHT 349
Labs: Tuesday 3:30; Wednesday 3:30
OfficeHours: Tuesday 1:30-3:30; Wednesday 12:30-1:30 and 2:30-3:30
Email: dapon(at)

Lab Instructor

Chris Porter
Office: 434 JBHT
Lab: Monday 3:30; Thursday 3:30; Friday 3:30
Office Hours: MRF 9:00-10:30
Email: cporter(at)

Catalog Listing:

Introductory course for students majoring in computer science or computer engineering. Software development process: problem specification, program design, implementation, testing and documentation. Programming topics: data representaion, conditional and iterative statements, functions, arrays and records. Using C++ in a UNIX environment.

Class Objectives:

Computer Engineering Program Outcomes

(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice

Computer Science Program Outcomes

(e) compose, test, and document programs in several different programming paradigms
(f) develop significant expertise in at least one important programming language

Class Objectives

The goal of this class is to develop fundamental computer-based problem solving skills in the following three areas:

  1. Software Development - The specification, design, implementation, testing, and documentation of software to solve specific problems.
  2. Structured Programming - The syntax, semantics, and use of the basic features of a typical structured programming language (e.g., loops, conditionals, functions).
  3. Algorithms and Data Structures - Basic methods for storing and manipulating data to effectively solve specific problems (e.g., arrays, binary search).
  4. Object Oriented Programming - The syntax, semantics, and use of the basic features of a typical object-oriented programming language (e.g., C++).

The pedagogical approach will be focused on solving problems using existing software modules (e.g., class libraries) and new modules when necessary. The syntax and semantics of programming language constructs will be introduced as needed in this context. Programmingassignments and their associated reports will be added to each student's programming portfolio. Labs will reinforce concepts taught in the lecture and also introduce students to the linux operating system.

Text Book:

Starting Out With C++ (Breif Version), Sixth Edition, 2010, by Tony Gaddis. Published by Addison Wesley.

Optional language manual:

Online notes covering the subset of C++ needed for this course can be found at

Optional operating system manual:

Learning the Unix Operating System , Fifth Edition, 2002, by Peek, Todino-Gongquet, and Strang. Published by O'Reilly Press.


Final grades in this class will be determined by a weighted average of lab grades, programming project grades, quizzes, and exam scores. We will use the following scale to assign final grades:

A: over 90%
B: 80% - 89%
C: 70% - 79%
D: 60% - 69%
F: below 60%

Students must pass BOTH the homework portion of the class (labs and projects) AND the exam portion (midterms and final) with a grade of D or better in order to pass this course. Hence, an overall average greater than 60% may still result in a failure in some cases.

The grade will be calculated as follows:

Quizzes: 10%
Labs: 20%
Programming Projects: 30%
Midterm: 15%
Final Exam: 25%

Quizzes: There will be frequent, short, in-class quizzes. Each will be based on the lecture materail presented during the previous lecture.

Labs: There will be weekly laboratory assignments. Grades for the labs will be based on completeness, correctness, and effort. Although lab materials are available on the web and can be submitted electronically, students are required to attend labs. Lab attendance will be taken in the first 15 minutes of the lab, and students who are not present will lose 50% of their grade for that lab. Labs which are not completed in the lab time can be electronically submitted within 24 hours of lab time with no late penalty. Labs submitted after this time will NOT be accepted.

Programming Projects: There also will be 6-8 relatively large programming projects The programming projects will be graded according to the following scale:

50% program correctness
20% software design
10% programming style
10% testing
10% documentation

Programming projects must be submitted electronically by midnight of the due date specified in the project description. Projects which are submitted within 24 hours of the due date will lose 10% of their grade. Projects will NOT be accepted beyond this 24 hour period. Partial credit will be given for programs which compile but which are not complete. Starting early on programming projects is strongly encouraged.

Students are allowed to discuss program design and other high level issues with each other. Students are also allowed to help each other understand specific compiler or run time error messages. However, unless otherwise specified, students are not allowed to work together on the homeworks. Copying all or part of another person's program is strictly prohibited and will result in a grade of zero and be reported to the CSCE head. Supplying printed or electronic copies of your homework to other classmates will also result in a grade of zero and be reported to the CSCE head.

Exams: There will be two exams in this class. One midterm exam and a comprehensive final. All exams will be closed book, but each student will be allowed a single 8.5 by 11 sheet of notes. Calculators will not be needed or allowed. Make up exams will only be allowed under exceptional circumstances (e.g., a note from your doctor).

Approximate Schedule

  • Chapter 1: Introduction to computers and Programming, 19 January
  • Chapter 2: Introduction to C++, 21 January
  • Chapter 3: Expressions and Interactivity, 26 January
  • Chapter 4: Making Decisions, 2 February
  • Program 1 due, 2 February
  • Chapter 5: Looping, 9 February
  • Chapter 6: Functions, 16 February
  • Program 2 due, 16 February
  • Chapter 7: Arrays, 23 February
  • Program 3 due, 2 March
  • Chapter 8: Searching and Sorting Arrays, 4 March
  • Midterm Exam, Friday 11 March
  • Chapter 9: Pointers, 16 March
  • Program 4 due, 18 March
  • Spring Break
  • Chapter 10: Characters, Strings, and the string class, 28 March
  • Chapter 11: Structured Data, 1 April
  • Chapter 12: Advanced File Operations, 6 April
  • Program 5 due, 6 April
  • Chapter 13: Introduction to Classes, 13 April
  • Program 6 due, 20 April
  • Chapter 14: More About Classes, 22 April
  • Program 7 due, 4 May
  • Final Exam, Wednesday 11 May, 10:15 - 12:15
  • Academic Misconduct:

    The department, school and university have very strict guidelines regarding academic misconduct. Obviously, copying is not allowed on exams. Students are expected to submit their own work on individual programming projects. Lending or borrowing all or part of a program from another student is not allowed. Students ARE allowed to borrow and modify any code on this class web site in their labs or programming projects. Instances of cheating will result in a zero on the copied assignment/exam and the policy specified in the University of Arkansas Undergraduate Studies Catalog, Academic Regulations, Academic Dishonesty will be followed.

    ADA Statement:

    If any member of the class has a documented disability and needs special accommodations, the instructor will work with the stuent to provide reasonable accommodation to ensure the student a fair opportunity to perform in this class. Please advise the instructor of the disability and the desired accommodations within the first week of the semester.

    Inclement Weather:

    If the university is officially closed, class will not be held. When the university is open, you are expected to make a reasonable effort to attend class, but not if you do not feel that you can get to campus safely. Assignment due dates will be postponed in case of inclement weather.