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 |
|
Home
Page |
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
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.
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.
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):
- Introduction: what is a computer, what is software, what is computer science (software engineering)?
- Input/Output (I/O)
- Conditional statements
- Loops
- Functions
- Arrays
- Strings
- 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.