About CSAlpha Spring 2021

Notice: This is a new version of the syllabus and curriculum which no longer aligns with CSAlpha's Spring 2021 class.

Lectures: Sundays 8-9pm PT

Lecturer: Samuel Do
Samuel Do is a computer science student at Stanford University and has worked with the Java programming language since middle school. He created the CSAlpha course to provide free education, guidance, and feedback for students interested in Java.

Course Overview

Over the decades, Java continues to be a relevant and popular programming language. When you learn Java, you also learn many important paradigms and concepts used in the software engineering world. In this course, you will be building your Java fluency through the creation of projects and exploration of common programming problems. Your mastery of Java, Object Oriented Programming (OOP) concepts, and software design principles presented in the course will help contribute to your future success as a developer.

Course Goals

Prerequisites

None. No programming background required.

Required Course Preparation

Grading

Scores are distributed according to the weights below.

Course Schedule

Week Topic(s) Concepts
Week 1

Datatypes

Variables

Simple Control Flow

Operators

Declaring and instantiating variables, primitive datatypes

Data literals vs. variables

Boolean condition evaluation

If, else-if, else statements

Operators

Week 2

Scanners / User Input

Advanced Control Flow

Scanner.nextLine() method

.equals vs. == for Strings/Objects

Driving control flow based on user input

While loops, for loops, jump statements

Switch statements

Week 3

Arrays

ArrayLists

Initialization, retrieving size of array

Iterating through arrays, for-each loops

Multidimensional arrays

ArrayList type arguments

Primitive wrapper classes

Essential ArrayList methods

Week 4

Functions

Function parameters, return types

Calling functions

Scope of variables, variable lifetime

Functions as abstractions and efficient code use

Function overloading

Week 5

Classes

Objects

Methods, fields, and constructors

Creating and interacting with objects

Constructor overloading

Use of classes as abstraction

Access modifiers, other modifiers

Encapsulation, getter and setter methods

Week 6

Inheritance

Polymorphism

Extending a class

Method overloading and overriding

Upcasting and downcasting

Code reusability and best practices

Abstract classes

Interfaces

Week 7 Exceptions

Types of exceptions

Try, catch, finally blocks

Throwing exceptions

Week 8 Generics

Generic classes

Generic methods

Bounded type parameters

Type inference

Week 9

Final Project Week 1

Java Swing

Most commonly used JComponents

Essential JComponent methods

GUI design principles

Action/Component listeners

Week 10

Final Project Week 2

MigLayout

Persistent Data

MigLayout

Loading, reading, and saving files

What's next?

Exam Schedule

Week Subject
Week 2 Variables, control flow, user input
Week 4 Functions, arrays, ArrayLists
Week 6 Classes, objects, inheritance, polymorphism
Week 8 Exceptions, generics