CSCE 2004

Foundations I Syllabus

Spring 2010

Web Page:


Name: Gordon Beavers 

Office: 504 JBHT 

Office Hours: 3:30 - 4:30 MTWR, or by appointment 

Phone: 575-6040 

Email: gordonb(at) 

Web Page:

Teaching Assistants:

Eugene Cartwright 

Office: 434 JBHT 

Labs: Mon 1:30; Fri 1:30

Office Hours: Tues Thurs 9:00-12:00 

Email: eugene(at)

Matt Miller
Office: 434 JBHT
Labs: Wed 7:30; Tues Thurs 2:00
Office Hours: Wed 9:30 - 11:30; Tues Thurs 12:00 - 2:00

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 representation, 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 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. Four programming assignments 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:  C++ How to Program, Seventh Edition, 2009, by Deitel & Deitel. Published by Prentice Hall.

Additional Materiall:     Online notes cover 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.

Grading: 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.

Grades  will be calculated as follows:

    Quizzes: 20%

    Labs: 20%

    Programming Projects: 20%

    Midterm Exam: 15%

    Final Exam: 25%

Quizzes: There will be short, in-class quizzes every Monday. Each will take no more than 10 minutes to complete and will be based on the lecture material presented during the previous week. 

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.  Lab assignments not completed during the lab period will be accepted during the 24 hour period after the end of the lab.  Assignments submitted after this period will NOT be accepted.

Programming Projects: There also will be four 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 class time 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 homework. Copying all or part of another person's program is strictly prohibited and will result in a grade of zero and being reported to the CSCE department head. Supplying printed or electronic copies of your homework to other classmates will also result in similar sanctions.

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).

Tentative Schedule:

January 11, Chapter 1. Introduction to Computers 

January 13, Chapter 2. Introduction to C++ Programming

January 20, Chapter 3. Introduction to Classes and Objects

January 27, Chapter 4. Control Statements: Part 1

February 3, Chapter 5. Control Statements: Part 2

February 10, Chapter 6. Functions and an Introduction to Recursion

February 22, Chapter 7. Arrays and Vectors

March 5, Chapter 8. Pointers
March 12, Friday, Midterm Exam covering chapters 2 - 7

March 15, Chapter 9. Classes: A Deeper Look, Part 1

March 19, Chapter 10. Classes: A Deeper Look, Part 2
March 22, Spring Break

March 31, Chapter 11. Operator Overloading

April 9, Chapter 15 and 17. Stream Input/Output and File Processing
April 18, Chapter 18, Class string and String Stream Processing
May 5, Wednesday 10:00 - 12:00, Final Exam (comprehensive, but emphasizing chapter 8 and the following material)

Academic Misconduct:

The CSCE Department, Engineering College and the University of Arkansas all 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 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 grade of 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 student to provide reasonable accommodation to ensure the student a fair opportunity to perform in this class. Please advice 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.