Computer Science Department

Loyola College

 

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 10:50-12:05 (in DS121)

 

Office Hours:      Monday, Wednesday:   1-3

                                                                Thursday:  12:30-1:30  

            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.

                                                                                                                                                                                                            --Ada Augusta Byron, 1843

 

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 Bartlett Publishers, Sudbury, MA, 2005.

                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

Reading a file

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