Computer
Science Department
CS 201 - Computer Science I
Instructor: Roberta
E. Sabin
Office: Donnelly
Science 125E
Telephone: (410) 617-2562
FAX : (410)
617-2157
E-mail: res@loyola.edu
Black Board Course Website:
http://www.loyola.edu/blackboard/index.html
Visit the CS Department WebSite:
http://www.cs.loyola.edu
Class
Meets: MWF 10-10:50 (in KH006), R
Office
Hours: Monday, Wednesday: 1-3
Thursday:
Others
times by appointment. (I am usually here every weekday except Tuesday.)
|
One
must learn by doing the thing, for though you think you know it, you have no
certainty until you try, --Sophocles, 5th
century B.C. In
programming, it is not enough to be inventive and ingenious. One also needs
to be disciplined and controlled in order not be become entangled in one's
own complexities. --Harlan D. Mills, Forward to Programming Proverbs
by Henry Ledgard The
price to be paid for reliability is simplicity.
-- C. A. R. Hoare Communicating
what the code is supposed to do is more important than having it work right
because someone is going to have to change it late. --Carl Powell, Analytical
Engine has no pretensions whatever to originate anything. It can do whatever we know how to order it
to perform. -- |
CS
201 Computer Science I 4
credits
SYLLABUS
Catalog Description: Prerequisite:
none
A general survey of the
major areas of computer science including theory of computation, elementary
digital logic, programming languages, artificial intelligence, common
application software, ethical issues in computing, and software design. Introduces elementary structured programming,
including top-down design, functions, loops, and arrays. First course in the major’s sequence.
Texts: Anderson,Julie
and Hervé Franceschi, Java
5 Illuminated, Jones and
Eastman, Roger, Lecture
Notes (unpublished manuscript).
Supplemental Software:
Java documentation (from Sun): http://java.sun.com/j2se/1.3/docs/api/
jGrasp download site and documentation: http://www.eng.auburn.edu/grasp/
Java tutorial: http://chortle.ccsu.ctstateu.edu/CS151/cs151java.html
(slow, methodical, and very comprehensive)
Course Objectives:
Upon successful completion of this course,
the student should be able to:
1.
understand
to some degree the major theoretical principles underlying computer science
2.
understand
the major hardware and software components of a computer system
3.
understand
the purpose and structure of software and the steps in the software lifecycle
4.
understand
and use top-down design in program development and graphical representations of
that design
5.
understand
and use object-oriented design in software development and represent class relationships with simple
UML diagrams
6.
write,
test, and debug programs that utilize some constructs available in standard Java
7.
have
some understanding of object-oriented programming and the classes of the Java
API
8.
enunciate
and intelligently respond to ethical issues related to computing
What you can expect of me: You can expect that I
will come to class prepared and ready to help you learn. You can expect me to be enthusiastic (easy--since
I LOVE computer science and teaching!), be knowledgeable, and keep the class
moving. You can expect me to be available during my office hours and at other
times that you arrange to see me. Expect
me to return graded work promptly. You
can expect me to treat you respectfully.
What I expect of you:
I
expect you to come to every class prepared to contribute to class—computing is
an active sport. You CANNOT learn it in
the passive mode. This means that you should have completed the assignment,
done the reading, and determined what you need help in understanding. You contribute to class by intelligently
questioning the instructor and offering further explanation to me and your classmates.
I expect you to take responsibility for learning computer science—you won’t be
sorry. Further, I expect you to treat
every other member of the class (including me) with respect.
Course
Outline of Class Lectures:
Notice that each Monday and Friday class
will normally concentrate on programming in Java. On Wednesday, the lecture will be largely
devoted to a “breadth-first” CS topic and preparation for Thursday’s lab. Breadth-First
Topics are denoted in italics. Thursday labs are normally devoted to discussion
of programming assignments and an exercise that will facilitate your completion
of the programming assignments. The Thursday extended period is also used for
testing.
The schedule may be changed as need arises.
|
Class No. |
Date |
Major Topics
|
References[1] |
|
1 |
9/7 W |
Introduction to the
course B: Introduction to computing |
Syllabus E1.1 |
|
L |
9/8 R |
Introduction to Java Lab 1: using jGRASP for
a first application |
|
|
2 |
9/9 F |
Discussion of Lab 1 Introduction to Java |
1.4-1.5 |
|
3 |
9/12 M |
Storing data
and performing operations
|
2.1-2.3 |
|
4 |
9/14 W |
B: The history of computing |
E1.2
|
|
L |
9/15 R |
Discussion of PA1 Lab 1: a math
application |
|
|
5 |
9/16 F |
More on arithmetic
expressions and operations |
2.4 |
|
6 |
9/19 M |
Object-Oriented
Programming: data fileds and methods PA1 due |
3.1-3.4 |
|
7 |
9/21 W |
B: Software development |
E 5.1 |
|
L |
9/22 R |
Lab 2: Using classes |
|
|
8 |
9/23 F |
Using classes
|
The Java API |
3.6-3.7 |
||
|
9 |
9/26 M |
More on Java classes Intro to the JApplet class |
3.7 4.1-4.2 |
|
10 |
9/28 W |
B: How data is stored |
E6.1-6.2
|
|
L |
9/29 R |
Lab 3: Creating a
simple applet |
|
|
11 |
9/30 F |
Using Graphics
methods |
4.3-4.4 |
|
12 |
10/3 M |
Making decisions:
selection |
5.1-5.2 |
|
13 |
10/5 W |
B: Data correction, encryption, and compression PA2 due |
E6.3 |
|
L |
10/6 R |
Lab 4: Random number
generation |
|
|
14 |
10/7 F |
More on if structures |
5.3-5.5 |
|
15 |
10/10 M |
Flowcharting, control
flow, and testing |
5.6-5.9 |
|
16 |
10/12 W |
Discussion of PA3 |
|
|
L |
10/13 R |
TEST 1 |
|
|
no class |
10/14 F |
Mid-Semester Break
|
|
Second Half
Class Schedule
|
17 |
10/17 M |
B: Encoding, Decoding, and Compression Final Discussion of
PA3 |
E 6.3 |
|
18 |
10/19 W |
PA3 due Test review |
|
|
L |
10/20 R |
Test 1 |
|
|
19 |
10/21 F |
(Shortened class) UML and class
relationships |
Hand-outs |
|
20 |
10/24 M |
Looping:
Event-controlled
|
6.1-6.3 |
|
21 |
10/26W |
B:Computer Hardware |
E 7.1-
|
|
L |
10/27 R |
Lab 6 |
|
|
22 |
10/28 F |
Doing things with
loops |
6.4 |
|
23 |
10/31 M |
Checking input More loop
construction |
6.5-6.8 |
|
24 |
11/2 W |
B: Computer Hardware (con’t) PA4 due |
E7.2 |
|
L |
11/3 R |
Quiz 3 Lab 7 |
|
|
25 |
11/4 F |
For loops and nesting |
6.10-6.11 |
|
26 |
11/7 M |
Creating Classes:
data members, constructors, accessors, mutators |
7.1-7.6 |
|
27 |
11/9 W |
B: Computer
Languages |
E8.1.1-8.1.3
|
|
L |
11/10 R |
Lab 8 |
|
|
28 |
11/11 F |
Scope Other methods |
7.7, 7.9-7.10 |
|
29 |
11/14 M |
More on class
construction |
7.11-7.16 |
|
30 |
11/16 W |
B: Computer Languages (con’t) |
E8.2 |
|
L |
11/17 R |
Quiz 4 Lab 9 |
|
|
31 |
11/18 F |
Arrays: declaring,
instantiating, using PA 5 due |
8.1-8.3 |
|
32 |
11/21 M |
Guest speaker |
|
|
33 |
11/28M |
Working with arrays |
8.3-8.5 |
|
34 |
11/30 W |
B: Computers & Ethical Issues |
E13 |
|
L |
12/1 R |
Test 2 |
|
|
35 |
12/2 F |
Searching in an array
|
8.6 |
|
36 |
12/5 M |
Sorting an array
|
8.6 |
|
37 |
12/7 W |
B: Computers &
Ethical Issues
|
E13 |
|
L |
12/8 T |
Quiz 5 (tentative) Lab 10 |
|
|
38 |
12/9 F |
More on arrays
|
8.7 |
|
39 |
12/12 M |
Exam review
|
|
|
Exam: Section
.01: 12/15 (AM) in DS121 Section .02: 12/16
(PM) in KH006 |
|||
GRADING
Your final grade will
be determined by the number of points that you earn. Approximately 1000 points will be possible
this semester. They will result from:
Collected written
assignments labs (approximately) = 250 points
4 quizzes =
100 points
6 programming assignments
(approximately) =
250 points
2 tests (100 points
each) =
200 points
1 final exam =
200 points
Total = 1000 points
Final letter grades
will be calculated on a scale close to the following:
A = 91 -
100% (905-1000 points)
A- = 88 - 90% (875-904 points)
B+ = 85 - 87% (845-874 points)
B = 81 - 84% (805-844 points)
B-
= 78 - 80%
(775-795 points)
C+ = 75 - 77% (745-774 points)
C = 71 - 74%
(705-744 points)
C- = 68 - 70% (675-704 points)
D+ = 65 - 67% (645-674 points)
D = 60 - 64%
(595-644points)
F = 0 - 59%
(594 or fewer points)
1. Tests and quizzes are announced. Consult the class schedule. An entire lab
period is normally devoted to testing.
2. Normally, homework is discussed at the
beginning of each class. Homework is generally collected on Monday (one of the
three assignments of the preceding week).
A submitted assignment is assigned a value of 10-20 points. Generally, half the points are awarded for
completeness and half for correctness.
Correctness is determined by my checking all or a portion of the
assigned exercises.
3. Programming assignments (PAs)
will be given periodically. Generally 10
days to 2 weeks are provided for the completion of a PA. Late PAs are NOT
accepted, unless so stated when the assignment is given. PAs are due at the
beginning of the regular class period. See class schedule for dates.
4. Please keep a record of the points you have
earned. This will enable you to calculate
your current average and correct errors on my part.
CLASS
PROCEDURES
0. This is a 4 credit course. You should expect this course to claim more
time and effort than a 3 credit course.
Your GPA will be affected accordingly.
(You should expect to invest at least 4 x 3 = 12 hours per week outside
of class time on this course.)
1. You are expected to have read the reference material listed in the class schedule before the lecture. Both the textbook and the "breadth-first" notes present material in a very concise manner. You will greatly enhance your experience of the lectures by coming to class prepared. I normally distribute many handouts--copies of notes, assignment sheets, etc. In the past, many students have increased their success in this course by keeping classnotes, programs, tests, and assignments organized. A three-ring binder is recommended (sections for breadth-first topics, class notes, programs, home assignments, and programming assignments may be helpful.)
2.
I
will use Blackboard for
dissemination of class materials. Blackboard will also hold copies of code
snippets, classnotes, programming assignments, weekly
assignments, data files, and important announcements. Normally, you will submit your programming
assignment BOTH in hardcopy and as a file send to me via the Blackboard DropBox.
3.
Regular
attendance is necessary for success in this course. As a point of courtesy, plan to arrive on
time for class. Students are responsible
for material presented and assignments made during absences. Normally, make-up exams are not administered
and LATE ASSIGNMENTS ARE NOT ACCEPTED.
4.
This
is a "hands-on" course.
Therefore, besides reading the texts, attending all classes, taking good
notes, completing assignments and studying, to be successful in this course,
you will need to spend a substantial amount of time in the lab or at your
computer. Many students find they need five to eight such hours per week. Try
to avoid pulling “all-nighters” to complete programming assignments. No one thinks clearly or uses time
effectively when he or she is exhausted.
Start planning a programming assignment when it is first distributed.
Remember that the Intro Programming Lab (DS121) is usually quiet and not
crowded.
5.
Should
you need extra help, please see me during office hours or make an appointment
for a mutually convenient time. Do NOT
wait until you are totally lost and have failed a test or quiz. Your success is my first priority. Even if I am busy or seem distracted, please
know that I am determined to be available to you for your assistance.
6.
Assignments
that are not printouts should be submitted on standard size paper. Please make them legible and neat. Illegible
and/or sloppy assignments will NOT be graded.
7.
All
assignments that are not pair programming exercises are to be completed by the
student as an individual. Collaboration on algorithm design is encouraged. However, sharing code or answers to exercises
is NOT allowed. (See below.)
8.
Academic
honesty is required of all Loyola students at all times. It is expected that all students abide by the
Honor Code:
|
The Honor Code states that all students of the Loyola Community have been equally entrusted by their peers to conduct themselves honestly on all academic assignments. The students of this College understand that having collective and individual responsibility for the ethical welfare of their peers exemplifies a commitment to the community. Students who submit materials that are the products of their own minds demonstrate respect for themselves and the community in which they study. All outside resources or information should be clearly acknowledged. If there is any doubt or question regarding the use and documentation of outside sources for academic assignments, your instructor should be consulted. Any violations of the Honor Code will be handled by the Honor Council |
Any copying of an
assignment, whether electronically or by hand is considered plagiarism. Students submitting non-trivial projects with
identical structure will be considered to have acted dishonestly. Such students may be referred to the Honor
Council for disciplinary action. At the
very least, two or more students presenting assignments identical in all
important aspects will share the points from a single grade. Discussion among students on how to attack
programs is encouraged. However, as soon
as code is exchanged, the line between collaboration and plagiarism has been
crossed. [Note that the guidelines above do NOT apply to paired
programming assignments.]
You will be asked to
sign the following pledge that will appear at the bottom of all tests and
quizzes:
"I understand and will uphold the ideals of academic
honesty as stated in the Honor Code."
9.
If
you have a disability of any type that requires an accommodation, please let me
know as soon as possible.
[1]
Numerals
indicate text sections; E indicates the Eastman text 2 B
indicates a breadth-first topic