CS111 Syllabus


Overview

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

 

Fundamentals of Programming

Concepts
  • The programming process
  • Flowcharts
  • Input, output, and temporary storage (variables)
  • Mathematical computation
  • Boolean logic
  • Decision-making (branching)
  • Iteration (looping)
  • Test case construction
  • Program tracing

Introductory Java Programming

Concepts
  • Compile-time and run-time errors
  • Objects and references
  • Code instrumentation
Java
  • Basic program framework and syntax rules
  • Data types: boolean, int, double, char, objects/references
  • Literals, variables, constants
  • Operators, expressions, operator precedence
  • Type conversion
  • Instantiating objects, primitive and reference types
  • null keyword
  • Calling methods (static and non-static)
  • Decision statements: if, if/else, if/else if/.../else
  • Loops: do/while, while, for

Procedural Programming

Concepts
  • Procedures (a.k.a. subroutines, functions, methods, etc.)
  • Solving problems using recursion
Java
  • Writing static methods
  • Writing recursive methods

Data Structures

Concepts
  • Strings
  • Arrays (one-dimensional, multi-dimensional)
Java
  • Strings
  • Arrays (one-dimensional, two-dimensional)

Efficient Algorithms

Concepts
  • Efficiency analysis, big-O notation
  • Sequential search, binary search
  • Sorting: selection sort, insertion sort, quicksort
Java
  • Implementation of searching and sorting algorithms

Object-Oriented Programming

Concepts
  • Object-oriented design, encapsulation
  • Writing a test driver
  • Blackbox testing
Java
  • Defining classes, member variables, and methods
  • public and private modifiers

Miscellaneous topics (time permitting)

Concepts
  • Exceptions
  • Files
Java
  • try/catch statement
  • throws statement
  • File I/O