Course Syllabus

CPE 101: Fundamentals of Computer Science I

Spring 2011 - Section 03



 

Instructor

Clark Savage Turner

Office

14-222

Office Phone

756-6133

Email

csturner@calpoly.edu

Home Page

www.csc.calpoly.edu/~csturner

 

Prerequisites

 

  • MATH141 (or equivalent) with a grade of C- or better.

 

Course Objectives

 

  • Learn the basic principles of algorithmic problem solving and procedural abstraction.
  • Exposure to the software development process: top-down design, incremental development, testing, and documentation.
  • Learn the syntax and semantics of one modern programming language (C).
  • To be successfully prepared for CPE/CSC 102.

 

Course Text

 

Problem Solving and Program Design in C (Sixth Edition) by Hanly and Koffman, Addison Wesley

ISBN: 0-321-53542-1 (Sixth Edition)

 

  • This text is required.
  • You may share a copy of the book with one or more other students if you wish.

 

The C Programming Language (Second Edition) by Kernighan and Ritchie, Prentice Hall

 

  • This book is not an introductory programming text but is an excellent technical reference.
  • This text is HIGHLY recommended as a companion resource for the course and is most worth your time and money - it will pay you back as you develop as a computer scientist, software engineer or a computer engineer.

 

If you already own a book on C programming (not C++), and think you would like to use it as your text this quarter, ask me about it during the first week.

 

Policies and Advisories

 

1)      This course will have a common final.  This final will be common to all sections of CPE 101.

2)      The College of Engineering requires proof of unusual circumstances to withdraw from a course after the eighth day of the quarter.

3)      A course grade of incomplete is given only for reasons acceptable to the University.

4)      Labs and Programs must be submitted on or before the date and time specified in the assignment to receive credit.  Late assignments will not be accepted.

5)   Labs and Programs will be graded on vogon (a specific computer where you will electronically submit your programs) and must compile using the gcc compiler and the compiler options -ansi -pedantic -Wall -Werror -ansi to receive credit. You are responsible for making sure your submissions compile and run as expected on vogon with this compiler and options regardless of where it was developed.

6)   Grades for many assignments may be delivered via email to your CalPoly email account or to you in class.  Any and all grading issues must be brought up with your instructor in person within one week of being provided the grade.  You are responsible for checking your email regularly.

7)      There are no makeup exams or quizzes except in documented and extreme emergencies, usually by prior notice to the instructor.  If you know you are going to miss an exam or quiz talk to me before the event as early as possible and we may be able to work something out if it is a serious emergency.  Exams and quizzes are normally closed book and closed notes.
    

       * Name games - If you have a spare moment, we recommend you read this, a light guide to name etiquette at the university.


Individual Work and Academic Honesty

Many of your lab assignments, and possibly some of the projects, will allow work in pairs or teams.  It’s easier for many people to explore difficult new material with a partner to work with. 

 However, you will be required in your professional work to be able to write programs on your own as well.  For this reason several of the class programming projects will be designated as individual work only.  You are required to do your own work on these assignments.   Collaboration on such projects is strictly forbidden, and you must sign a contract (attached to this syllabus) agreeing to this standard.

If you're accustomed to a high-school environment where cheating is discouraged but not really punished, please become unaccustomed to it immediately.  We're very serious about this rule, because we know that individual work is an essential part of what you need to be successful professionals.  Cheating will not only be punished with an F for the course; it will also result in the 101 instructors collectively filing a request that  you be expelled from the university. 

If you feel you cannot complete the work on your own, the right solution is to come to one of us and ask for help or to use the resources described below.  We will give you individual attention, and a student tutor to assist you as well, but we’ll make sure you ultimately are able to program on your own.

The penalties for cheating on individual assignments apply not only to the receiver of help, but also to the giver.  Even well-intentioned help can seriously degrade a fellow student’s education if it is done incorrectly.  Do not offer assistance to fellow students on individual assignments, and keep  your own work secure. 

 If you are actively interested in learning how to tutor fellow students, please Email Dr Staley at cstaley@calpoly.edu.  He runs our tutoring center, and teaches a course for students interested in tutoring (CSC 303).  Once you learn how to help fellow students in a way that enhances their education, we’d value your assistance in the tutoring center.  (And we’ll pay you for it, too.)

If you have any question regarding the cheating standards, please feel free to ask us.  We don't mind such questions; in fact we appreciate them because they show that you're taking the standards seriously.


Lecture and Lab Attendance

 

Attendance, while strongly recommended, is required only on the days of quizzes and exams.  If you choose not to attend lecture or lab you are responsible for obtaining copies of any handouts, lecture notes, and any important announcements from another student in the class.  As you might suspect, your instructor likes to believe that regular attendance will help you perform better on your quizzes, exams, and programs.  In addition, your attendance and participation with questions, observations, and opinions will result in a better learning experience for you and for your peers!

 

Email

 

I may send announcements to your Cal Poly email account.  Expect to check this account regularly so that you do not miss an announcement.


Reading and Homework

 

You are expected to read the assigned chapters prior to class.  Not all material in the reading will be covered in lecture or lab but you are still responsible for knowing it for quizzes and exams.  Come to class prepared with any questions from the reading that you would like addressed in lecture.  Generally, we expect to cover the topics from the required textbook (Hanly, Koffman) from chapter 1, 2, 3, 4, 5, 6, 8 and parts of chapter 9.  Of course, what is addressed in lecture may be very different and the text is considered an important supplement.  You are responsible for the readings and any information given in lecture. 

 

There may be regular homework assigned from the text in addition to your projects and labs.  The key to learning how to program is to practice! 


NOTE: You may collaborate on homework exercises with as many people as you like but, be sure you know the material well enough that, in the end, could do it independently - you will need to on quizzes and exams.  Notice that collaboration is normally considered cheating on exams and individual programming projects. 

 

Lab and Lab Exercises

 

Regular and frequent labs will be assigned and, together, will comprise part of your course grade. You are expected to work on the lab exercises during your scheduled lab time plus as much additional time as necessary to complete them.  The lab exercises are designed to familiarize you with some of the concepts necessary to complete your programs and to help you do well on quizzes and exams.  In addition, the three hours of scheduled lab time each week is the primary time your instructor will be available for questions and assistance, make wise use of this resource!  You may work on your programs in lab after completing all currently assigned labs.

 

IMPORTANT: No late labs will be accepted.

 

NOTE: You may collaborate on lab exercises with as many people as you like but, be sure you know the material well enough that, in the end, could do it independently - you will need to on quizzes and exams.

 

Program Assignments

You will write a number of larger programs over the quarter that, together, will comprise a significant part of your course grade.  The programs will require analysis, design, implementation, testing, and documentation. The grading of the programs is rigorous. Credit is giving only to solutions that compile and are, for the most part, functionally correct.

Programming Style

  
When you submit programs for grading, they’ll be required to comply with a programming style sheet, which specifies layout of the code, use of indentation, variable naming, etc.  Your instructor will go over this style sheet with you in class.                

A uniform programming style makes it easier for programmers to work together on projects, and we will require the same style for all 101 students this fall in order to promote uniform style within the major.  Any code that varies significantly from the required style will be handed back to you to redo,  possibly with penalties, until it complies with the style sheet.


 

IMPORTANT:

  • No late programs will be accepted.
  • As discussed above, you may not collaborate, work with, or even discuss programming assignments with anyone other than your instructor or a University approved tutor.   (Note that labs may be collaborative!)


Midterms and Final Exam

 

 The final exam will be on-paper, cumulative and comprehensive, and will cover material covered in lecture, your text, as well as problems solving and programming skills.  The exact time and date will be given in advance, it will be a common final for all the CPE 101 sections.  If you have a conflict, you must notify the instructor immediately so that proper arrangements can be made.

There will be two midterms to cover important topics in manageable chunks.    You must receive a score of 70% or better to pass. 

 

IMPORTANT:

 

  • No makeup exams will be given.
  • The final exam is a common final for all sections of CPE 101.

 


 

Lab Programming Tests
    • Three times during the quarter, we will conduct lab quizzes in which you’ll have to write a short program within an allotted time (typically 60 minutes).  This will be individual work, subject to the noncollaboration standards described above.  We’ll grade these lab tests pass/fail, and to pass your program must be fully complete and correct.
    • You must pass all three of these tests in order to pass the class.
      • they are graded pass/fail and have no other affect on your class grade
      • you must pass all three of these or you will receive a "D" or an "F" grade for the course, depending on other class performance
      • the programs assigned contain very specific instructions and requirements.  Your program must pass 100% of the instructor's tests.  Failure to produce correct behavior as specified for any of the tests will result in failure of the quiz.
      • There are possible retakes for failed lab quizzes, but that is up to the discretion of the instructor.  









 

Grading

 

The following table presents the weighted value of all graded items based on a course total of 100%:

 

Graded Item

Value (Each)

Value (Total)

Length (Each)

Four programs

5%

20%

Variable

Labs

1%

10%

Variable

Homework/Class Partic.

~

5%

Variable

Three Lab Quizzes 

0%

Pass all 3 or fail course

50 minutes or less

Two Midterms

15%

30%

50 minutes or less

One  final

35%

35%

170 minute



 Grading is on a standard scale where true excellence is rewarded with an "A."  Adequacy is indicated by a "C."   Do note that in order to register for CPE 102, you must pass CPE 101 will a grade of C- or higher.  A grade of D means that you must retake CPE 101 before proceeding to the next course.  Also, keep in mind that the College of Engineering has instituted strict requirements concerning course repetitions and continuing in "good standing" - just this year.  Pay attention to these policies, find yourself an advisor and take good care of yourself in this regard. 

    Basic Topics List

    We will cover the following basic topics in this course.  The "schedule" is tentative and subject to change and evolution due to interactions, needs of     the class and other imperatives.  The schedule is NOT the final authority on what goes on in class, the instructor's explanation during class is:            
    therefore, take notes and check the accuracy of the schedule regularly.  Check with others if class or lab must be missed, get copies of notes from         those days.

Topics (not necessarily covered in order):

  1. Introduction: what is a computer, what is software, what is computer science (software engineering)?
  2. Input/Output (I/O)
  3. Conditional statements
  4. Loops
  5. Functions
  6. Arrays
  7. Strings
  8. Pointers


The CSC department runs a tutoring center.  We recommend this center highly - you really should go there just to meet the staff even if you have no trouble at all.