CS201, Computer Science I

Instructor: Prof. Charlene Tsai
Office: MC 113C
email: ctsai@iona.edu
Tel: : 633-2241

Class meetings:
Mon, Tue, Thurs:9:00AMRoom MC 132
Mon: 10:00AMRoom MC 121(lab)

Office Hours
Mon11AM-1PM
Thurs10AM-12noon

Required Texts
Stuart Reges and Marty Stepp, Building Java Programs, A Back to Basics Approach, Addison-Wesley, Boston, 2008. ISBN 0-321-38283-8

Other References:
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to algorithms, 2nd ed, The MIT Press, Cambridge, 2001, ISBN 0-262-03293

Course Prerequisites:
Time management ability and basic high school math. Prior programming experience not needed. (That's the reason you're here!)

Grading Criteria
Homework:30% (bi-weekly, 4.5% for 1~5, 7.5% for 6)
Lab assignment:10% (binary grading)
Tests (2@15%):30%
Final Exam (all-inclusive):30%

Course Description
The focus of the course is on algorithm design, data representation, programming, and application. To convert algorithms to programs, Java is the chosen language to demonstrate a variety of control structures and data structures. Programs of increasing difficulty will be assigned to students to enhance the skill of problem analysis and solution design.

Course Goals
At the completion of this course, students should:

  1. understand how data is represented in a computer in its binary format
  2. know the essentials of program design and the importance of algorithms in the problem-solving process
  3. understand the use of and differences between primitive types and reference types
  4. be able to design, implement, test, debug, and document programs
  5. understand parameter passing methods
  6. be able to write programs that use various control structures
  7. know the basic features of the Java programming language
  8. understand basic file I/O
  9. understand arrays and array processing, and be able to design and implement basic array algorithms

Homework/Laboratory Assignments
Students will be given exercises to complete during the weekly laboratory sessions. The grade is binary (0/1) for each submission. Each laboratory assignment should be completed and handed in within 48 hours. A homework assignment containing five to ten problems will be handed out every two weeks. In all cases, students must submit an algorithm description and a well-documented program in Java for every problem.

Policy on Collaboration

Policy on Plagiarism and Academic Dishonesty:
Cheating on an exam or plagiarism on an assignment will result in a failing grade for the exam or assignment. Cheating on the final exam may result in a failing grade for the course.

Policy on Assignments:
Completed assignments must be handed in at the time they are due. Late submissions will not be accepted.

Course Outline:

  1. Introduction to algorithmic problem solving
  2. Basic Computing Concepts
  3. Primitive Data
  4. Loops
  5. Interactive Programming
  6. Managing Complexity
  7. Objects
  8. Conditional Execution
  9. File Processing
  10. Arrays
  11. Searching and Sorting (revisited)
  12. Introduction to recursion (maybe)
Schedule
WeekDateTopicText ReferenceAnnouncements
Week 1 8/28 Getting acquainted ...
Week 29/2Series 1: Introduction to Algorithmic Problem SolvingHomework1 out
9/4Updated lecture notes
Week 39/8
Lab1Right-angle triangle in stars
9/9 Updated lecture notes
9/11
Week 49/15Series 2: Basic Computing Concepts
Lab2"T" in stars
9/16
9/18Series 3: Primitive Data Homework2 out
Week 59/22Discussion on Homework1
Lab3"Hello World!" and temperature converter
9/23Jave Primitive TypesSection 2.1
9/25VariablesSection 2.2
Week 69/29Series 4: LoopingSection 5.2
Lab4Computing compound interests
9/30Section 2.3Homework3 out
10/2Prime number example using for-loop
Prime number example using while-loop
Week 710/6Test 1 (materials covered in HW1 & 2)
Lab5Square numbers
10/7Greatest Common Divisor
Square root
10/9Series 5: Interactive ProgrammingSection 3.4
Week 8 Lab6Division exercise, division.java
10/14 Homework4 out
10/16Homework3, Problem #3
Week 910/20Series 6: Managing Complexitysections 1.4, 3.1 & 3.2
Lab7Printing Z again
10/21Case study: Encoding problem
10/23
Week 1010/27Series 7: Objects Section 3.3
Lab8Printing sum of fractions
10/28conversion for encoding Homework 5 out
10/30
Week 1111/3
Lab9 Square-root problem again
11/4Test 2 (open-book)
11/6Series 8: Conditional Execution and Patterns Section 4.2
Week 1211/10
Lab10 Computing the area
11/13
Week 1311/19 Series 9: File Processing Section 6.1 Homework 6 out
11/13Series 10: Arrays Section 7
Week 1411/24
lab11Bubble sorting
11/25
Week 1512/1The toy program for polling
lab12Discussion session for Homework6
12/2The toy program for image smoothing
12/4Series 11: Algorithm Analysis
Week 1612/8Series 12: Recursion Section 12
lab12Discussion session for Homework6
12/9The complete program for the encoding problem
12/11Final: 3:30~5:40