CS 181 Introduction to Computer Science Honors I

Fall 2013

InstructorGeorgios Portokalidis
Teaching assistantSadia Akhter
Mailing listcs181@lists.stevens....
Lectures:Mondays and Wednesdays 12:00-12:50pm (room E229)
Lab:Thursdays 12:00-1:40pm (room B430)
Recitation:Fridays 12:00-12:50pm (room E229)
Office hoursMondays 1:00-2:00pm (L213)

Overview | Course material | Grading | Schedule


This is a fast-track introductory course in computer science using the Java programming language. Experience with Java is not required, as all topics will be developed from scratch, but you are expected to have had considerable high-school exposure to computer programming. You should be familiar with the following concepts: variables, arithmetic and Boolean operators, the assignment statement, (nested) if–else statements, (nested) loops, basic I/O.

Course material




Your final grade will be determined by your performance in the following:

1st Midterm Exam 15%
2nd Midterm Exam 15%
Final Exam 30%
Assignments 40%

Assignments should be done individually. You can discuss the problems with your classmates, but you must not share details of the solutions.

Honor system

Stevens honor system: "The Honor System at Stevens [..] insures that work submitted by students can be trusted as their own and was performed in an atmosphere of honesty and fair play."

Week-by-week schedule

Subjects covered in lectures are tentative and will change (last update 8/20/13).

Week Subjects Readings Assignments

1. 8/26/13

Course logistics.

Introduction to Computer architecture.

Representation of numerical data, arithmetic and bitwise operations.

A sip of Java: setup your environment and run your first programs.

Monday's slides

Wednesday's slides

Chapter 1

Assignment 1
due on 9/12

2. 9/2/13

No class on Monday.

Programming basics: object-oriented programming, writing algorithms, testing and debugging.

Java fundamentals: Variable declaration and initialization; data types; expressions: operators precedence and associativity; assignments.

Simple I/O, formatted output, input delimiters.

Lecture slides

Chapters 1 and 2


3. 9/9/13

The Java String class.

Documentation and coding style.

Control flow: branching.

The boolean type.

Slides: Java strings

Slides: Comments and coding style

Slides: Control flow: branches

Chapters 2 and 3

Assignment 2
due on 9/26

4. 9/16/13

Control flow: loops. while, do..while, for, and foreach loops.

Slides: Loops

Chapter 4


5. 9/23/13

Defining classes and methods.

OOP concepts: Information hiding and encapsulation.

Class types, objects and references.

Slides: defining classes and methods

Slides: information hiding

Slides: class types and object references

Chapter 5


6. 9/30/13

Class constructors.

Method overloading.

Static variables and methods.

Java packages.

Slides: more about objects and methods

Chapters 6, 7.1, 7.2, 7.3, and 7.5

Assignment 3
due on 10/17

7. 10/7/13

Select sort.

Inheritance, polymorphishm, and interfaces.

Slides: Select sort

Slides: Inheritance and Polymorphism

Slides: Interfaces and abstract classes

Chapter 7.4 and 8

8. 10/14/13

Fall recess on Monday

Monday class schedule on Tuesday

1st Midterm Exam


9. 10/21/13

Java exceptions, exception handling, and defining your own exceptions.

Java stream I/O.

Text and binary file I/O.

Slides: Exceptions

Slides: I/O

Chapters 9 and 10

Assignment 4
due on 11/10

10. 10/28/2013


Solving problems with recursion.

Merge Sort.

Slides: Recursion

Slides: Merge Sort

Chapter 11


11. 11/4/13

2nd Midterm Exam


12. 11/11/13

Dynamic data structures

Recursive data structures: Linked lists

Generic types and classes

Array-based data structures

Using the Java collections framework

Slides: Recursive data structures

Slides: Stacks and Queues

Chapter 12


13. 11/18/13

Tree data structures.

Tree traversal algorithms: Pre-order, in-order, post-order traversals. Binary trees and binary search trees.

Differences of Java from other OOP languages.

Lecture slides

Appendix 6


14 and 15. 11/25/13 - 12/6/13

Thanksgiving recess from Wednesday 11/27/13 to Sunday 12/1/13

Building GUIs.

Introduction to event driven programming.

Lecture slides

Chapters 1-12