CS-0007 Syllabus

Note: Topics in green mean that we have already covered in class

Lecture Topics

Lecture Videos

Lecture Codes

Course Introduction:

  • General Info (Intro1: 0m:00s)
  • Course website (Intro1: 4m:20s)
  • About the Professor (Intro1: 6m:15s)
  • Grade Policies (Intro2: 2m:05s)

Course Intro - Part 01

Course Intro - Part 02

 

Chapter 1: Introduction

  • Computer Systems (C1V1: 0m:41s)
    • Hardware (C1V1: 0m:55s)
    • Software (C1V1: 1m:20s)
    • Platforms (C1V1: 2m:15s)
  • Features of a useful program (C1V1: 5m:45s)
  • Programming Languages (C1V1: 7m:50s)
  • Why Java (C1V1: 10m:30s)
    • The need for an interpreter
    • Problem statement (C1V2: 0m:00s)
    • Bite code and The Java Virtual Machine (C1V2: 2m:56s)
  • Differences between compiled and interpreted programming languages (C1V2: 6m:45s)
  • Environment for Writing Java Programs (C1V2: 7m:55s)
    • NetBeans general IDE overview (C1V2: 8m:53s)
    • How to install NetBeans (C1V2: 11m:10s)
  • Compiling and Running your Java Program (C1V3: 0m:00s)
    • Via terminal/command window (C1V3: 0m:17s)
    • Via NetBeans (C1V3: 7m:34s)
    • How to debug a program via NetBeans (C1V3: 12m:15s)
  • Java Reserved Words (C1V4)

Chapter 01 - Part 01

Chapter 01 - Part 02

Chapter 01 - Part 03

Chapter 01 - Part 04

Chapter 01 source code

Chapter 01 Slides

Chapter 2: Java Fundamentals

  • Parts of a program (C2V1: 0m:33s)
  • Identifiers for Variables, Methods, and Classes (C2V1: 9m:20s)
  • Java naming convention (C2V2: 0m:00s)
    • Example: Payroll program (C2V2: 2m:25s)
  • Java Literals (C2V2: 9m:00s)
  • Data types (C2V2: 10m:53s)
    • Examples (C2V3: 2m:22s)
    • Why bother about different data types? (C2V4: 0m:00s)
    • Primitive versus Object data type (C2V4: 4m:20s)
  • Arithmetic Operators (C2V5: 0m:00s)
  • Operator Precedences (C2V6: 0m:00s)
  • The Java API (C2V6: 7m:10s)
    • The Math Class (C2V6: 7m:10s and C2V7: 0m:00s)
  • Formatting numbers using cast, int operations, and the Math API (C2V7: 2m:36s)
  • The String Class (C2V8: 0m:00s)
  • Scope (C2V8: 6m:00s)
  • Comments (C2V8: 11m:55s)
  • Programming Style (C2V9: 0m:00s)
  • Ways of inputting data into your program: (C2V10: 0m:00s)
    • Hard coded data (C2V10: 1m:52s)
    • The main(String[] args)  (C2V10: 4m:30s)
      • Parsing Methods:  a way of converting a string into a number (C2V10: 7m:30s)
    • File reading (C2V10: 10m:45s)
    • Keyboard input (C2V11: 0m:00s)
    • Dialog boxes input (C2V11: 5m:34s)
    • Dialog Boxes (C2V11: 5m:34s)

Chapter 02 - Part 01

Chapter 02 - Part 02

Chapter 02 - Part 03

Chapter 02 - Part 04

Chapter 02 - Part 05

Chapter 02 - Part 06

Chapter 02 - Part 07

Chapter 02 - Part 08

Chapter 02 - Part 09

Chapter 02 - Part 10

Chapter 02 - Part 11

Chapter 02 source code

Chapter 02 Slides

Chapter 3: Decision Structures

  • General Introduction (C3V1: 0m:00s)
  • The if statement (C3V1: 1m:38s)
    • The if statement conditions: (C3V1: 3m:02s)
      • Boolean Expressions (C3V1: 3m:50s)
    • String Comparisons (C3V1: 8m:00s):
      • Wrong way: using == (C3V1: 8m:00s)
      • equals() method (C3V1: 9m:21s)
      • equalsIgnoreCase() method (C3V1: 10m:45s)
      • compare() method (C3V1: 11m:40s)
      • A detailed explanation why not using == (C3V2: 0m:00s)
  • if statement seen as flowcharts (C3V2: 6m:35s)
  • The if - else statements (C3V2: 8m:55s)
  • Nested if statements  (C3V2: 9m:33s)
  • The if - else if - else statements (C3V2: 11m:22s)
  • Examples (C3V3)
  • Logical operators - General Idea (C3V4: 0m:00s)
    • The AND operator (C3V4: 0m:20s)
    • The OR operator (C3V4: 2m:16s)
    • The NOT operator (C3V4: 3m:15s)
  • Logical operators - Java implementation (C3V4: 4m:02s)
  • The switch statement (C3V4: 6m:52s)
    • General Form (C3V4: 7m:10s)
    • The importance of the BREAK statment (C3V4: 8m:13s)
    • Examples (C3V4: 11m:06s)
  • Displaying formatted output (C3V5: 0m:00s)
    • DecimalFormat Class with examples (C3V5: 1m:05s)
    • The String printf method (C3V5: 8m:23s)
  • Enumerated Types:
    • General Concept (C8V9: 0m:00s)
    • From int representation to an enum (C8V9: 3m:00s)
    • Examples of using enumerators:
      • in methods (C8V9: 5m:15s)
      • in SWITCH statements (C8V9: 13m:40s)

Chapter 03 - Part 01

Chapter 03 - Part 02

Chapter 03 - Part 03

Chapter 03 - Part 04

Chapter 03 - Part 05

Chapter 08 - Part 09

Chapter 3 source code

Chapter 03 Slides

Chapter 4:

Loops:

  • The WHILE loop:
    • The general idea (C4V1: 0m:51s)
    • Example: the "guessing number game" (C4V1: 7m:51s)
      • Generating Random Numbers (C4V2: 0m00s)
  • The DO-WHILE loop (C4V3: 0m:00s)
  • Increment / decrement operators (C4V3: 4m:57s)
  • The FOR loop (standard and enhanced) (C4V3: 7m35s)
  • Nested FOR loops (C4V4: 0m00s)
  • Continue (C4V4: 6m21s)
  • Break (C4V4: 9m18s)
  • Using array in FOR loops (standard and enhanced)

Files:

  • File Input and Output (C4V5: 0m:00s)
  • Text versus Binary Files (C4V5: 2m:38s)
  • Reading Text Data from File (C4V5: 4m:19s)
    • Reading until the end of the file (C4V6: 0m:00s) 
  • Writing Text Data into File (C4V6: 2m:35s)
    • Appending data to a file (C4V6: 9m:05s)
  • Specifying the file location (C4V6: 10m:38s)
  • Checking file existence and read/write permissions
  • Handling file-related exceptions  (C4V7: 0m:00s)

Chapter 04 - Part 01

Chapter 04 - Part 02

Chapter 04 - Part 03

Chapter 04 - Part 04

Chapter 04 - Part 05

Chapter 04 - Part 06

Chapter 04 - Part 07

Chapter 4 source code

Chapter 04 Slides

Chapter 7: Arrays

  • Introduction to Arrays (C7V1: 0m:00s) 
  • How to define arrays: (C7V1: 3m:50s)
    • 1D array (C7V1: 3m:50s)
    • 2D array (C7V1: 11m:04s)
    • 3D array (C7V2: 0m:00s)
    • 4D arrays and beyond (C7V2: 1m:42s)
  • Slicing ND array to an N(D-1) array  (C7V2: 4m:14s)
  • Copying Arrays (C7V3: 0m:00s):
    • The wrong way of copying arrays (C7V3: 0m:00s)
    • The right way of copying arrays (C7V3: 5m:57s)
    • Increasing the array size (C7V3: 8m:13s)
  • Array Manipulation - Practical Review (C7V4)
    • Creating an array (C7V4: 0m:58s)
    • Adding Values into an Array (C7V4: 4m:55s)
    • Looping over an array data (C7V4: 10m:57s)
    • Increasing an array size (C7V5: 0m:00s)
    • Copying array contents (C7V5: 3m:52s)
    • Reseting an array (C7V5: 8m:08s)
    • Sorting Elements in an Array (C7V5: 9m:50s)
    • Creating Multi-dimensional Arrays (C7V5: 10m:19s)

Chapter 07 - Part 01

Chapter 07 - Part 02

Chapter 07 - Part 03

Chapter 07 - Part 04

Chapter 07 - Part 05

Chapter 7 source code

Chapter 07 Slides

Chapter 5: Methods

  • Introduction (C5V1: 0m:00s)
  • The overall idea about methos (C5V1: 2m:34s)
  • Advantages of using Methods (C5V1: 10m:05s)
  • Functional Abstraction (C5V2: 0m:00s)
  • Real world examples related to methods (C5V2: 1m:39s)
  • The General Form of a Method (C5V3: entire video and C5V4: 0m:00s)
    • Permission types
    • Modifier types
    • Returning types
    • Naming conventions
    • Method arguments 
  • Calling methods (C5V4: 8m:05s)
  • Variables passed by Values (C5V5: 0m:00s)
    • Example (C5V5: 6m:41s)
    • Be careful passing arrays as method input (C5V5: 7m:42s)
  • Java Exceptions and Methods (C5V6: 0m:00s)
    • Real world example (C5V6: 0m:41s)
    • Java program example (C5V6: 3m:04s)
  • Global versus Local Variables (C5V7: 0m:00s)
    • Review of Global and Local concepts (C5V7: 0m:10s)
    • Program examples of local and global variables (C5V7: 2m:51s)
  • Method Documentation (C5V8: 0m:00s)
    • Example: Java API Documentation (C5V8: 0m:40s)
    • Auto-generated Documentation (C5V8: 4m:24s)

Chapter 05 - Part 01

Chapter 05 - Part 02

Chapter 05 - Part 03

Chapter 05 - Part 04

Chapter 05 - Part 05

Chapter 05 - Part 06

Chapter 05 - Part 07

Chapter 05 - Part 08

Chapter 5 source code

Chapter 05 Slides

Chapter 16: Recursion

  • Introduction to Recursion
  • Solving problems with recursion
  • A recursive binary search
  • The towers of Hanoi
  • Real life examples on where recursion can be used
  • Maze solution
  • Math Series (sine, cosine, etc.)