Course Syllabus CISC181
Introduction to Computer Science -- Fall 2009
Course Particulars
Lecture:
|
Tuesday/Thursday 11:00-12:15, 123 Sharp Lab
|
Lab:
|
Section 020 -- Thursday, 12:20-1:10, 101D Pearson
Section 021 - Thursday, 1:25-2:15, 101D Pearson
Section 022 - Thursday, 2:30-3:20, 101D Pearson
|
2010
|
Course Project Number |
Instructor:
|
Dr.
Kathy McCoy
|
Office:
|
201 77-79 E. Del. Ave
|
Hours:
|
Tuesday 3:30-5:00pm; Thursday 9:00-10:30am |
email:
|
mccoy@cis.udel.edu
|
Phone:
|
831-1956
|
Teaching Assistants:
|
Section 020:
|
Nicholas Messina |
Office:
|
103 Smith Hall
|
Hours:
|
Friday, 12:00-2:00pm
|
email:
|
nmessina@UDel.Edu
|
|
Section 021:
|
Conor Gilsenan
|
Office:
|
103 Smith Hall
|
Hours:
|
Tuesday 2:00-3:00pm
|
email:
|
conorgil@UDel.Edu
|
|
Section 022:
|
Tim Walsh
|
Office:
|
103 Smith Hall
|
Hours:
|
Monday 4:00-5:30pm; Wednesday 4:00-5:30pm
|
email:
|
hedgehog@UDel.Edu
|
Course Objectives
The primary objective of this course is to begin to study computer science
as a discipline. We lay foundational concepts necessary for effective practical
application in the realm of software engineering and for more theoretical
endeavors which underly such practical applications.
Our main emphasis will be on the study of the programming language C++,
an extension of the widely used C language. C++ contains many features
to support modern concepts in software engineering --- concepts that are
not a part of C.
Our objectives in CISC 181 will be to
-
Obtain a solid foundation in core C++, i.e., in those parts of C++ that
correspond to C and C++ stream input/output.
-
Discuss and learn essential aspects of good program design.
-
Obtain an introduction to the concepts of object oriented programming,
abstract data types, and reusable software through the study of C++ features
like classes, overloading operators, inheritance, and polymorphism that support these concepts.
-
Understand when and how these concepts can be effectively used to create
``reusable'' programs (or program components).
-
Understand and effectively use memory management techniques.
-
Obtain an introduction to some elementary data structures like stacks,
queues, and lists. Understand their associated algorithms, and how to use
them appropriately in applications.
-
Further develop skills in testing and debugging.
Prerequisites
The prerequisites for this course include a C- or better in
either cisc108 or cisc106. Both courses have introduced
students tp programming in a high level language. Students
must also have
(or will quickly acquire) working knowledge of a text editor such as emacs,
or vi (we will use emacs in this class).
It is also assumed that students have been introduced to the
unix operating system and to the computing environment here at the University of Delaware.
Texts
-
Required
-
Walter Savitch Absolute C++
, Fourth Edition, Addison-Wesley (2010).
The book has a companion website with some interesting resources for students.
It can be found at
http://wps.aw.com/aw_savitch_abc_4s/
-
You will need a unix text or resources as well. The one selected for the course is
Andersen, Just Enough Unix
Fifth Edition, 2006, MCG.
This book has been recommended to me for your use. Other
books/resources are also available. You will need to be
able to use unix well and you will continue to use it
throughout the rest of your time in this
department. Investing some time now will pay off.
-
I am going to use clickers in the class for class
participation. You will need to get a clicker.
Tentative Topics and Calendar
Note: Generally new material will be introduced first through the reading,
then discussed in lecture, and then used in homework assignments and projects.
Reading assigned on a given date is to be done before the next lecture.
The labs will be devoted to explanations of the mechanics of using the
various software used in the course, help with techniques of debugging
and testing, on-line exercises to reinforce the above, etc.
Topics |
Approx. Date |
Chap. 1, Intro. to Computers C++ |
|
Chap. 2, Flow of Control |
|
Chap. 3, Function Basics |
|
Chap. 4, Parameters and Overloading (partial) |
|
Chap. 5, Arrays |
|
TEST 1 |
Tuesday, Oct 1st? |
Chap. 10, Pointers and Dynamic Arrays |
|
Chap. 9, Strings |
|
Chap. 6, (Structures) and Classes |
|
Chap. 7, Constructors and Other Tools |
|
TEST 2 |
Tuesday, Oct. 27th (pretty solid date since I am out of town) |
Chap. 8, Operator Overloading, Friends, and References |
|
Chap. 17, Linked Data Structures |
|
Chap. 14, Inheritance |
|
Chap. 15, Polymorphism and Virtual Functions |
|
Chap. 10, Polymorphism |
|
Chap. 13?, Recursion |
|
Chap. 16, Templates? |
|
Final Exam |
During Finals Week (could not find a tentative date) |
Other Important Dates
-
Last day to register or to add courses, Tuesday, September
15
-
Freshman mid-term marking period ends, Friday, October
16
-
Last day to drop w/o penalty, Tuesday, October 27
-
Last CISC181 class-- Tuesday, December 8
Attendance
Attendance at ALL lectures and labs is required. An absence is excused
only for some event beyond the student's control, e.g., sickness, a death
in the family. Some examples of absences that are not excused include (1)
conflicts with work schedules (these are assumed to be worked out before
the student enrolls for the course), (2) reservations to travel, especially
around vacation periods (the semester calendar is published well in advance),
(3) non-emergency doctor and dental appointments.
Grading
-
Daily/Weekly Homeworks
-
With most classes there will be a set of exercises assigned (usually from a textbook).
These exercises will be due at the start of the following class (unless
otherwise specified). In the beginning, these can be done on paper, however it
is suggested that you do any involving programming on a machine.
Instructions for scripting your homework assignments/programs will be provided.
Daily homeworks will be graded on a variable point scale (generally between 5 and 30 points). Because we will often
discuss homeworks in class, they may not be turned in late (for a grade -- you
may wish have them graded just to make sure you are understanding the material
if you are late).
-
Labs
-
Each Thursday you will have a lab assignment to do during the lab session.
The purpose of the lab is to familiarize yourself with various programming
concepts, debugging tools, etc... with the benefit of a teaching assistant
should you have any questions/concerns. The TA will come with a lab assignment
to the lab. You are required to work on the lab at the lab time and will
usually turn in the lab at the end of the lab session. In cases where you
are unable to complete the lab during the alloted time,
***NEW*** you may turn in the assignment before 5:00pm
on Friday (the day following the lab). All labs will be
turned in using Sakai (https://sakai.udel.edu/portal).
Attendance for the entire lab period is mandatory; you must be there at the start of lab and you
may only leave lab early if you have turned in a completed lab assignment. Labs
will be graded on a 10 point scale. Because we will often discuss labs in class,
they may not be turned in late (for a grade -- you may wish have them graded
just to make sure you are understanding the material if you are late).
-
WARNING: It is best to complete the lab during lab or immediately
after (the labs are designed so that you should be able to complete them
during the lab period). You will also generally have a homework assignment due for
Tuesday's class.
-
Programs
-
There will be approximately 3 larger programming assignments. These you
will be given several weeks to complete. We will be using the CC compiler
on the ``composer'' machines.
-
The grading of the programs will be based on both their correctness and
their clarity. The correctness concerns whether the program is complete
and accurate (i.e., does it actually do what it is supposed to do?). The
clarity of the program concerns the program documentation (including both
comments and well-chosen function and variable names), the format, modularity,
code structure, testing methodology, etc... Programs will be graded on a 100
point scale.
-
Exams
-
There will be three exams. These will be closed-book (though I may permit
some notes to be used).
-
Course Grade
-
The following table indicates how the final grade will be calculated:
Class Participation |
5% |
Daily homeworks |
10% |
Labs |
10% |
Programming projects |
25% |
Test 1 |
15% |
Test 2 |
15% |
Final Exam |
20% |
-
As an estimate of how the grades will be assigned, please refer to
the table below. This table may be updated as is required during the semester.
However, given a particular average, you may be assured that your grade
will be no lower than that indicated by this table. If the final course
average is
>= 92 |
= |
A |
>= 90 & < 92 |
= |
A- |
>= 88 & < 90 |
= |
B+ |
>= 82 & < 88 |
= |
B |
>= 80 & < 82 |
= |
B- |
>= 78 & < 80 |
= |
C+ |
>= 72 & < 78 |
= |
C |
>= 70 & < 72 |
= |
C- |
>= 68 & < 70 |
= |
D+ |
>= 62 & < 68 |
= |
D |
>= 60 & < 62 |
= |
D- |
< 60 |
= |
F |
-
Special consideration will be given to students who fall just below a grade
cut-off. The special consideration will take into account such factors
as class participation, punctual completion of projects, ``bad days'' suffered
in exams, and other intangibles. Such considerations will never lower your
grade but can raise it.
-
There are invariably mistakes in grading exams and projects. After an exam
or project is returned in class, you will have one week to submit
a written request to have it re-graded. After one week no requests for
grade changes will be considered. The request for re-grading should include
the original paper and the reason and justification for re-grading.
Periodically (2 to 3 times during the semester) you will be given
a ``snapshot'' of your grade (and an indication of where you stand with
respect to the rest of the class). The intention is to not only allow you
to see how you are doing in the class, but to make sure that there are
no mistakes in the grading file. Please check your recorded grades against
the snapshot and point out any inconsistencies within one week.
Late Policies
Many assignments will be due at a specific time specified on the
assignment and will be submitted through Sakai
(https://sakai.udel.edu/portal).
For "paper" to be handed in during class, deadlines are at the
start of class (e.g., 11:00am) on the due date. All
assignments will be collected at that time.
Any assignments turned in (on the due date but) after the
specified time (e.g., for paper assignments, after
they have been
collected) will be considered 1 day late and will lose 5%. An additional
5% penalty will be added for each 24 hours after the due date. No assignment
will be accepted more than 7 days late.
Late paper assignments may be turned in to my mailbox (in 103 Smith Hall or
in 77-79 E. Delaware Avenue). You may also turn in assignments to my office
(201 77-79 E. Delaware Avenue). Late assignments must include the time
that they actually reach my box (and this you are on your honor to record
correctly) as well as the computer date (if applicable).
Excuses for late assignments will be considered ONLY if I am notified
in advance (preferably days in advance!). You may always reach me via email
at
mccoy@cis.udel.edu or by phone at 831-1956.
Keeping up with the Work!
The work-load is heavy in this course -- but it is heavy for a reason.
The nature of the material is such that you need to ``learn by doing''.
It is unlikely that you will achieve mastery of the material without trying
out the presented concepts. Because virtually all of your other CIS courses
will build in this one, it is very important that you master this material.
DO NOT GET BEHIND!! Do not leave assignments to the last minute
(or get in the habit of turning in assignments late). Start assignment
early and finish them early. Because you have assignments due almost every day,
once you get behind it is difficult to catch up. Work that you do now will
help build a solid foundation for your future classes!
Here is a file that I think you might find helpful.
Prof. Caviness's 181 Success Tips This contains some nice advice for how to
succeed in cisc181.
Academic Honesty
I expect you to observe the highest ethical standards in this course. This
means not only in the respect of the computer systems and your fellow users
of these systems, but also in the individual class work that you turn in.
I expect, and indeed encourage, you to consult and learn from each other
with respect to conceptual problems, use of various computing facilities,
and debugging assistance. However, you must be sure that the work that
you turn in be your own and not copied from another in any way. Please keep in
mind that copying an assignment (or partial assignment) solution from the
internet is plagiarism (just as copying from a classmate would be). You should
adhere to the University's Code of Conduct at all times, and ask me if you have
any doubt. All violations
of academic honesty (e.g., any evidence of collaboration beyond what is
specified here) will be handled according to University policy. I encourage
you to familiarize yourself with the University's Policy of Academic Dishonesty
found in The Official Student Handbook.
Professor Caviness includes the following in some of his course policies
and I thought you would benefit from it: Rather than simply following the
rules because of the negative consequences if you do not, I hope that you
will be inspired by values such as the following expressed by William Cobbett.
It is the mind that lives; and the length of life ought to
be measured by the number and importance of our ideas; and not by the number
of our days. Never, therefore esteem [persons] merely on account of their
riches or their station. Respect goodness, find it where you may. Honor
talent wherever you behold it unassociated with vice; but, honor it most
when accompanied with exertion, and especially when exerted in the cause
of truth and justice.
A Grammar of the English Language, 1819.
Faculty-Student Interaction
The instructor and the TA are here to help you, so please do not hesitate
to call on us. If you are having trouble, the sooner you talk to us the
easier it is to deal with your problem. We are also happy to see you if
you are not having problems, e.g., if you find a particular topic interesting
and would like to know more about it, if there is a question that you did
not get a chance to ask in class, etc.
You are encouraged to make use of posted office hours. If, however,
you have a time conflict with the office hours or if you run into difficulty
at other times, please email me (
mccoy@cis.udel.edu) with a question or
for an appointment. Please keep in mind that my schedule can be very busy at
times. I will attempt to reply to email in a timely fashion, but please do not
expect that I will be able to help if you have started the project late and are
against a deadline. Please be in the habit of starting the assignments
early so that you can identify the difficulties (and hopefully discuss them
during my office hours).
Also, please make use of email for sending questions at any time. I
will respond to them as soon as possible. I will also email the class --
especially in cases where something needs to be clarified in an assignment.
Please check your email regularly even when you do not have a programming
assignment due.
Return to
Course Home Page
Return to Dr. McCoy's
Teaching Page
Return to Dr. McCoy's Home Page
Corrections, suggestions and comments to
mccoy@cis.udel.edu
Kathleen F. McCoy
Last updated August 31, 2009