CS111 - Summer 2011
Syllabus
Objective
The aim of CS111 is to introduce the student to the fundamental techniques used in computer science and software development. Upon completion of this course, the successful student should be able to design, write, test, and analyze programs to solve simple real-world problems.
CS111 uses the Java programming language, but it is not a training course in Java. Many Java features, such as applets, GUI programming, Java Server Pages (JSP), etc., are not covered in this course.
Prerequisite Knowledge
-
Parts of a computer: processor, memory, disk drives, screen (monitor), keyboard, mouse
-
File system concepts: files, directories (folders), difference between data files and programs
-
Internet skills: use of web browser and e-mail
-
Algebra concepts: variables, functions, exponentiation, logarithms
Textbook
The following text is available online, free of charge.
Introduction to Programming using Java
Version 5.1.2
David J. Eck
The textbook does not cover all material discussed in class, and is not a substitute for attending lectures.
Topics Covered in CS111
-
Background
-
Basic computer architecture: code vs. data, memory organization
-
programming process: Problem analysis, program construction, testing/debugging
-
Algorithm Construction
-
Pseudocode
-
Input, output, and temporary storage (variables)
-
Mathematical computation
-
String manipulation
-
Boolean operations
-
Decision-making (branching)
-
Iteration (looping)
-
Procedures (subroutines)
-
Test case construction, program tracing
-
Introductory Java Programming
-
Programming languages, compilation, and interpretation
-
Compile-time and run-time errors
-
Objects
-
Code instrumentation
-
Basic program framework and syntax rules
-
Data types: int, double, char, String, boolean
-
Literals, variables, constants
-
Operators, expressions, operator precedence
-
Type conversion
-
Calling methods
-
Decision statements: if, if/else, if/else if/.../else
-
Loops: do/while, while, for
-
Writing procedures (static methods)
-
Object-Oriented Programming
-
Object-oriented design, encapsulation
-
Writing a test driver
-
Blackbox testing
-
Instantiating objects, primitive and reference types
-
null keyword
-
Defining classes, member variables, and methods
-
public and private modifiers
-
Data Structures
-
Arrays (one-dimensional and two-dimensional)
-
Efficiency analysis, big-O notation
-
Sequential search
-
Sorting: selection sort, insertion sort
-
Arrays (one-dimensional and two-dimensional)
-
Recursion
-
Recursive definitions of problems
-
Mathematical recursion, recursion on strings
-
Recursion in Java, method call stack
-
Searching and Sorting
-
Linear and binary search
-
Selection and Insertion sort
-
Quicksort and mergesort
-
Selection and insertion sort in java