Outline for Computer Science 125, Lecture 1
Boise State University, Spring 1999
Introduction to Computer Science
Instructor: Dr. Katherine St. John
E-mail: stjohn@cs.idbsu.edu
Phone: 426-1086
Office: MG 218A
Office Hours: Mondays and Wednesdays 10-11:30,
and by appointment.
Lecture: Mondays, Wednesdays 12:40-2:30 and Fridays 12:40-1:30 in MG
139
This outline is tentative and subject to change.
Week 1: Introduction to Java and Computing
- Reading: Computing Concepts with Java (CCJ), Chapters 1
and 2
Computer Ethics , Chapter 1.
- Activities: During the first week, you should:
- Get a computer account on
emerald (accounts and passwords
will be passed out in class).
- Work through the Unix handout (passed out with the accounts).
- Compile the "hello world" program discussed in class and the
book (CCJ, p 21).
- Print out a copy of the first homework assignment
(http://math-cs.idbsu.edu/~stjohn/cs125/hw1.html).
- Detailed Schedule:
- Monday, 18 January: MLK Day Holiday (no class).
- Wednesday, 20 January: First Day Details, Computer Overview,
Lab Orientation (CCJ: Chapter 1).
- Friday, 22 January: Compilation Process,
"Hello World" (CCJ: Chapter 1).
Week 2: Algorithms, Strings, And Objects
- Reading: CCJ: Chapter 2-3;
Ethics: Chapter 2 (Computer Crime) and The Cuckoo's Egg.
- Activities:
- Compile the programs discussed in Chapter 2 and 3 of CCJ.
- Work through the Practice Problems of
Homework 1. Note these
are not turned in, but some of these questions will be on the
exams.
- Read the section in Homework 1
about submitting programs electronically.
Only properly submitted homework will be graded, so, it is
important that you understand how to use the submit program.
- Submit electronically the programs in the first homework
assignment
(http://math-cs.idbsu.edu/~stjohn/
teaching/cs125/hw1.html).
- Print out a copy of the second homework assignment
(http://math-cs.idbsu.edu/~stjohn/cs125/hw2.html).
- If you plan to work on a machine other than
emerald, make sure
you know how to transfer files to
emerald and obtain the
jdk 1.1.3 compiler and the library the book uses
(located at
http://www.horstmann.com/ccj.html) for your machine.
- Detailed Schedule:
- Monday, 25 January: Algorithms, Airplanes, Number Types,
Input/Output (CCJ: Sections 1.6, 1.11, 2.1-2.2).
- Tuesday, 26 January: Homework 1 due
- Wednesday, 27 January: Assignments, Constants, Arithmetic,
Ethics in Computing (CCJ: Sections 2.3-2.5; Ethics: Chapter 1).
Some related pages:
- Friday, 29 January: Strings, Objects (CCJ: Section 2.6-3.1).
Week 3: More on Objects, Decisions
- Reading: CCJ: Chapter 3 and 4, Ethics: Chapter 2.
- Activities:
- Compile the programs discussed in Chapter 3 of CCJ.
- Read the David LaMacchia
case for Wednesday and
the indictment for wire fraud linked from that page.
We'll analyze and discuss the case in class
(from the WWW Ethics Center for Science and Engineering).
- Work through the Practice Problems of
Homework 2. Note these
are not turned in, but some of these questions will be on the
exams.
- Submit electronically the programs in the second homework
assignment
(http://math-cs.idbsu.edu/~stjohn/hw2.html).
- Print out a copy of the third homework assignment
(http://math-cs.idbsu.edu/~stjohn/cs125/hw3.html).
- Detailed Schedule:
- Monday, 1 February: More on Strings, Group Work:
ConvertMonth.java and
MakeRandomPass.java,
Constructing and Using Objects (CCJ: Section 2.6-3.2).
- Wednesday, 3 February: Graphical Objects, Copying Objects,
Group Work, Computer Crime in Ethics (CCJ: 3.5-3.9,
Ethics: Chapter 2,
David
LaMacchia case).
- Friday, 5 February: More on Objects, Clock Example, Decisions,
Relational Operators
(CCJ: Chapter 3, 4.1-4.2).
Second Homework due.
Week 4: More on Decisions, Functions
- Reading: CCJ: Chapter 4 and 5, Ethics: The Cuckoo's Egg
- Activities:
- Compile the programs discussed in Chapter 4 of CCJ.
- Finish reading The Cuckoo's Egg
for Wednesday.
- Study for Ethics Quiz on Wednesday. The quiz will cover
Chapter 2 (Computer Crime) and The Cuckoo's Egg.
- Work through the Practice Problems of
Homework 3. Note these
are not turned in, but some of these questions will be on the
exams.
- Submit electronically the programs in the third homework
assignment
(http://math-cs.idbsu.edu/~stjohn/hw3.html).
- Set up a webpage on emerald, following the directions
from lecture.
- Work through clock example:
- Detailed Schedule:
- Monday, 8 February: Clock Example, Setting up webpages,
Relational Operators, Input Validation,
(CCJ: Sections 4.2-4.9).
- Wednesday, 10 February:
Multiple Alternatives, Nesting, Logical Operators
Wrap-up of Decisions,
Ethics Quiz,
Ethics:
The Cuckoo's Egg (Chapter 4).
- Friday, 12 February: More on Webpages,
Java Documentation,
Group work
on designing objects,
Functions (CCJ: Sections 5.1-5.4),
Third Homework due.
Week 5: Functions and Recursion
- Reading: CCJ: Chapters 5,
Ethics: Chapter 3 (Software Theft).
- Activities:
- Compile the programs discussed in Chapter 5 of CCJ.
- Work through the Practice Problems of
Homework 4. Note these
are not turned in, but some of these questions will be on the
exams.
- Start the fourth homework assignment due next week
(http://math-cs.idbsu.edu/~stjohn/hw4.html).
- Study for Exam 1. See exam 1 webpage
for details.
- Detailed Schedule:
- Monday, 15 February: Presidents' Day Holiday (no class).
- Wednesday, 17 February: Functions: Return Values, Paramters,
Pie Chart
Example, Review
(CCJ: Section 5.1-5.2).
- Friday, 19 February: Exam 1.
Week 6: Functions and Recursion
- Reading: CCJ: Chapter 5,
Ethics: Chapter 3 (Software Theft) and the
David
LaMacchia case.
- Activities:
- Read the chapter on Software Theft from the Ethics book.
Consider the following as you read it:
- When is theft of software legal? When is it
ethical? Think about the position advocated
by the Electronic Frontier Foundation.
- Which laws apply to software theft? Should software
be patented? Should it be copyrighted?
- Is the "look and feel" of a product something that
can be stolen? Consider the case of Xerox's
interface used in the Apple Macintosh.
- Study for Ethics quiz on Friday.
It will cover
Chapter 3 (Software Theft) and the
David
LaMacchia case.
- Work through the Practice Problems of
Homework 4. Note these
are not turned in, but some of these questions will be on the
exams.
- Submit the fourth homework assignment
(http://math-cs.idbsu.edu/~stjohn/hw4.html).
- Detailed Schedule:
- Monday, 22 February: More on Functions, Function
Comments, Return Values, Recursion, Discuss Exam
(CCJ: Sections 5.1-5.6,5.14 ).
- Wednesday, 24 February: More on Recursion and
Fucntions, Modifying Parameters and Variable Scope,
Procedures,
(CCJ: Sections 5.7-5.9, 5.14).
- Friday, 26 February: Preconditions, Exceptions, Designing Functions,
Ethics Quiz,
Software Theft
(CCJ: Section 5.10-5.13, Ethics: Chapter 3),
Fourth Homework due (P9 and P10 only).
Week 7: Iteration and Classes
- Reading: CCJ: Chapter 6 and 7,
Ethics: Chapter 4 (Hacking and Viruses).
- Activities:
- Read Chapters 6 and 7 of CCJ.
- Compile the programs from Chapter 6 of CCJ.
- Read Chapter 4 of Ethics on Hacking and Viruses.
- Submit P11 and P12 from the fourth homework assignment
(http://math-cs.idbsu.edu/~stjohn/hw5.html).
- Read about the Back Orifice product:
(There will be an ethics quiz on Chapter 4 and Back Orifice the week of 8 March).
- Detailed Schedule:
- Monday, 1 March: Variable Scope, Designing with Functions, Group Work,
While Loops, Ethics Discussion on Software Theft
(CCJ: Chapter 5, 6.1-6.3, Ethics: Chapter 3).
- Wednesday, 3 March: Unix Redirection, Nested Loops, Simulations,
Group Work on Factoring (P6.12), Testing
(CCJ: Sections 6.4-6.6, 7.1-2).
- Friday, 5 March: Introduction to Classes,
Writing Constructors, More on Testing
(CCJ: Section 8.1-8.3),
P11 and P12 from Fourth Homework due.
Week 8: Testing and Classes
- Reading: CCJ: Chapters 7 and 8, Ethics: Chapter 4 (Hacking and Viruses)
and Chapter 5 (Unreliable Computers).
- Activities:
- Compile the programs discussed in Chapters 7 and 8 of CCJ.
- Work through the Practice Problems of
Homework 5. Note these
are not turned in, but some of these questions will be on the
exams.
- Submit the fifth homework assignment
(http://math-cs.idbsu.edu/~stjohn/hw5.html).
- Read Chapter 5 of Ethics on Unreliable Computers.
- Study for Ethics Quiz 3 on Monday
(topics are Chapter 4 and Back Orifice).
- Compile the plain java examples from the webpage.
- Detailed Schedule:
- Monday, 8 March: Writing Methods,
Examples of Classes, this pointer,
Ethics Quiz and Discussion on Hacking and Viruses
(CCJ: Chapter 8.3-8.6, Ethics: Chapter 4 and Back Orifice).
- Wednesday, 10 March: More on Classes, Using Makefiles,
Testing and Debugging,
equals, clone, and toString methods,
Group Work on objects (rectangles)
(CCJ: Chapters 7 and 8).
- Friday, 12 March: Hints on Testing,
Plain Java: Basic Applets: "Hello, Again",
"Scribble.java", Buttons, Choices,
"ColoredScribble.java"
(CCJ: Chapter 7),
Fifth Homework due.
Week 9: Plain Java and Arrays
- Reading: CCJ: Chapters 9, Chapter 5 (Unreliable Computers).
- Activities:
- Compile the plain java examples from the webpage.
- Compile the programs from Chapter 9 of CCJ.
- Work through the Practice Problems of
Homework 6. Note these
are not turned in, but some of these questions will be on the
exams.
- Study for Ethics Quiz 4 on Monday (topics:
Unreliable Computers). Postponed until
after Spring Break.
- Study for Exam 2 on Friday.
- Detailed Schedule:
- Monday, 15 March: Plain Java: More on AWT and Containers,
Stream Input,
Testing and Design,
(Postponed until after Spring Break: Ethics Quiz
and Discussion on Unreliable Computers )
(CCJ: Sections 9.1-9.2, Ethics: Chapter 5).
- Wednesday, 17 March:
Introduction to Arrays, Arrays inside Objects,
Arrays of Arrays,
Review
(CCJ: Chapter 9).
- Friday, 19 March: Exam 2.
Week 10: Arrays and Files
- Reading: CCJ: Chapters 10, Ethics: Chapter 5 and 6
(Unreliable Computers and Invasion of Privacy).
- Activities:
- Compile the programs from Chapter 10 of CCJ.
- Submit the sixth homework
sixth homework assignment.
- Compile the programs from Chapter 10 of CCJ.
- Take on-line ethics quiz on Unreliable Computers.
- Detailed Schedule:
- Monday, 29 March:
Arrays as Parameters and
as Return Values, Polygon Example, Group
work on Complete Graphs on n points,
Vectors,
(CCJ: Chapter 9).
- Wednesday, 31 March:
Removing
Items from Arrays, Collecting Matches, Multidimensional Arrays
Matrices, Rotations, Translations
Permutations,
(CCJ: Chapter 9 and Sections 10.1-2, Ethics: Chapter 5).
- Friday, 2 April:
Files in CCJ, Budget example,
Group work: double spacing a file,
Random Access in CCJ,
Discussion on Unreliable Computers,
(CCJ: Chapter 10.3-4).
Sixth Homework due.
Week 11: More on Files and Packages
- Reading: CCJ: Chapters 11.
- Activities:
- Study for Ethics Quiz on Wednesday (topic is
Chapter 6: Invasion of Privacy).
- Work through the Practice Problems of
Homework 7. Note these
are not turned in, but some of these questions will be on the
exams.
- Submit the seventh homework assignment.
- Detailed Schedule:
- Monday, 5 April:
More on Files,
Choices in Plain Java,
Linking Webpages, Weblogs and more HTML, Command
line arguments,
(CCJ: Chapter 10, Section 11.1).
- Wednesday, 7 April:
Files in plain java, parameters for applets,
Exceptions, Wrappers
Introduction to Packages
(CCJ: Chapter 11.2-5)
- Friday, 9 April:
Ethics quiz and discussion on Invasion of Privacy
Packages and Access Control,
Group Work: design a package,
Seventh Homework due
(CCJ: Chapter 11.5-6, Ethics: Chapter 6).
Week 12: More on Packages
- Reading: CCJ: Chapters 12.
- Activities:
- Work through the Practice Problems of
Homework 8. Note these
are not turned in, but some of these questions will be on the
exams.
- Compile the programs from Chapter 11 of CCJ.
- Detailed Schedule:
- Monday, 12 April:
Static Variables and Constants,
Plain Java, Stacks, Calculator Package,
Design: Airplane Reservation System
(Chapter 11).
- Wednesday, 14 April:
More on Calculator Package,
Review for Exam 3
(Chapter 11).
- Friday, 16 April: Exam 3.
Week 13: Sorting, Searching, and Analysis of Algorithms
- Reading: CCJ: Chapter 12 and 13,
Ethics: Chapter 7 (Expert Systems).
- Activities:
- Detailed Schedule:
- Monday, 19 April:
Selection Sort,
Merge Sort, Analysis of
Sorting, Rate of Growth
(CCJ: Chapter 12.1-5).
- Wednesday, 21 April:
More on Analysis of Sorting,
More on Rates of Growth, Searching,
Group Work: analyse R12.10 and R12.11
(CCJ: Chapter 12).
- Friday, 23 April:
Discuss Exam 3,
Efficiency of Recursion,
Threads in Plain Java
(CCJ: Chapter 12).
Eighth Homework due.
Week 14: Linked Lists and Trees
- Reading: CCJ: Chapter 13,
Ethics: Chapter 7 (Expert Systems).
- Activities:
- Work through the Practice Problems of
Homework 9. Note these
are not turned in, but some of these questions will be on the
exams.
- Submit the ninth homework assignment
(http://math-cs.idbsu.edu/~stjohn/hw9.html).
- Study for Ethics Quiz on Chapter 7 (Expert Systems)
in class on Wednesday.
- Detailed Schedule:
- Monday, 26 April: More on Threads, Animations
Example, Linked Lists (CCJ: Chapter 13.1-3).
- Wednesday, 28 April: Ethics Discussion and Quiz
(Expert Systems),
Doubly-linked Lists, Introduction
to Binary Search Trees
(Ethics: Chapter 7, CCJ: Chapter 13.3-4).
- Friday, 30 April: More on Binary Search Trees,
Inheritance, Superclass Constructor
(CCJ: Chapter 13, 14.1-2).
Ninth Homework due.
Week 15: Inheritance and Polymorphism
- Reading: CCJ: Chapter 14,
Ethics: Chapter 8 (Computerizing the Workplace).
- Activities:
- Compile the programs from Chapter 13 and 14 of CCJ.
- Study for Ethics Quiz on Chapter 8 (Computerizing the
Workplace) on Wednesday.
- Work through the Practice Problems of
Homework 10. Note these
are not turned in, but some of these questions will be on the
exams.
- Submit the tenth homework assignment
(http://math-cs.idbsu.edu/~stjohn/hw10.html).
- Detailed Schedule:
- Monday, 3 May: More on Inheritance, Sun Sorting
Demo, Superclass Methods
(CCJ: Chapter 14.1-3).
- Wednesday, 5 May:
Ethics Discussion and Quiz,
Polymorphism and Dynamic Binding,
Class Relationships,
Writing C++ Programs
(Ethics: Chapter 8, CCJ: Chapter 14, Appendix A3 (C++)).
- Friday, 7 May: Review,
Homework 10 due.
Monday, 10 May: Final Exam, 3:30-5:30pm