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