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
- Be proficient with Java basics and understand how to use Java as a general programming language for coding projects.
- Learn OOP concepts and design principles, while being able to effectively apply them to software engineering.
- Become accustomed to common coding conventions in Java.
Prerequisites
None. No programming background required.
Required Course Preparation
- Installation of Eclipse IDE
Grading
Scores are distributed according to the weights below.
- Assignments: 70%
- Exams: 30%
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 |