A comprehensive library of computer science lessons - including basic and advanced topics - meant as a learning and teaching resource hub for students and teachers, authored by Henry F. Bruckman Vargas, Ph.D.
- Importance, Purpose, Use, and Value of Computing and Informatics
- Computer Scientist Profile
- Problem Solving and Algorithmic Thinking
- Human-Computer Interaction (HCI) and User Interface/Experience (UI/UX)
- Security (Computer/Network/System)
- Architecture (Computer/Network/System)
- Databases and Information Systems
- Operating Systems and Virtualization
- Computer Graphics and Visualization
- Artificial Intelligence
- Parallel, Distributed, and Cloud Computing
- Software Engineering
- Emergent Topics and Technologies
- Issues, Concerns, and Considerations (Societal, Ethical, Moral, Legal, Professional)
- Setting Up the Development Environment
- Windows OS
- Visual Studio Code (VS Code)
- Git/GitHub
- C# and .Net in VS Code
- Java in VS Code
- Python in VS Code
- Node.JS in VS Code
- Writing, Building, and Running Your First Program
- Understanding Source Code (Syntax, Case-Sensitivity)
- Understanding Compilation (Building with Scripts, Compile-Time Errors)
- Understanding Execution (Debugging with Breakpoints and Console Outputs, Runtime Errors)
- Understanding IDE UI/UX (Shortcuts and Feedback)
- Primitive (Built-In) and Wrappers (Object-Based)
- Variables (
var,let,int) and Constants (const,final,readonly) - Literals and Escaped Characters (
'\n','\t','\u13567')
- Unary (
+,-,++,--) - Arithmetic (
+,-,*,/,%,^,**) - Assignment (
=,+=,-=,*=,/=) - Relational (
==,!=,<,<=,>,>=) - Logical or Boolean (
!,||,&&) - Ternary (
? :)
- Declarations and Initializations (Naming Hard Rules and Conventions)
- Operator Precedence and Parenthesis
- Type Conversion (Implicit / Explicit, Truncation, Promotion, Casting, Parsing)
- Overflow, Precision Loss, Division By Zero
- Strings and Characters
- Concatenation and Formatting
- Utilities (Is???, To???, Contains, IndexOf, Substring, Slice, Split, Join)
- Multi-Line or Verbatim (
@,""",\) - Interpolated (
$,`,f)
- Conditional Statements (
if,else if,else,switch) - Loops (
while,do-while,for,foreach,for...in,for...of)
- Arrays
- Linear Search
- Invocation or Call
- Arguments
- Return Type
- Console I/O
- String Parsing and Input Validation
- Line or Inline Comments (
//or#) - Block Comments (
/* ... */) - Consistent Formatting (Indentation, Long-Lines Breaking)
- Fundamentals Concepts (avoid gotos, excessive breaks / continues, and multiple returns)
- Modularization and Code Reuse
- Nullable (
?)
- Optional Chaining (
?) - Null-Coalescing (
??) - Nullish Assignment (
??=) - Null-Forgiving (
!) - Index-From-End (
^)
- Lambda/Arrow/Anonymous Functions (
=>or->) - Data Flow Pipelines (Filter-Map-Reduce, Pipe-and-Filter, Streams)
- Negative Indices and Ranges (
[-1], [1..4])
- Nested Loops and Loop Control (
break,continue,labels,return) - Exception Handling (
try-catch-finally) - Resource Management (
using, Try-With-Resources)
- Multi-Dimensional Arrays (Matrices)
- Enums, Structs, Records, and Tuples
- Collections (Lists, Maps, Sets)
- Custom Definitions
- Parameters Passing (By Copy, By Reference)
- Variable Scope/Lifetime and Hiding/Masking/Shadowing
- File I/O
- Absolute vs. Relative Paths
- Doc Comments (
/** ... */) - Code Readability and Style Guides
- Terminology (Fields, Methods, Class/Instance Members, State, Inner Classes)
- Fundamental Concepts (Encapsulation, Inheritance, Abstraction, Polymorphism)
- Structure and Organization (Properties, Constructors, Destructors, Getters, Setters)
- Common Behaviors (
ToString,Equals,GetHashCode) - Design Patterns (Factory, Singleton, Observer)
- Access Modifiers (
public,private,protected,default,internal,const,final,readonly,sealed,static) - Non-Access Modifiers (
abstract,virtual,override,volatile,transient,synchronized,native) - Type Systems: Static vs. Dynamic, Strong vs. Weak
- Type Checks and Casting (
instanceof,is,is not,as) - Bit-Wise (
~,|,&,^,<<,>>,>>>,|=,&=,^=) - Overloading
- Double Negation or Bang (
!!) - Short-Circuiting and Pipelining (
|,||,&,&&,|>)
- Generic and Templates
- Truthy / Falsy
- Regular Expressions (Regex)
- Asynchronous Control (Promises)
async/awaitthen-catch-finally
- Classes, Abstract Classes, and Interfaces
- Abstract Collections (Lists, Stacks, Queues, Deques, Maps, Sets)
- Memory Management and Garbage Collection (
new,finalize,delete)
- Variadic or Variable-Length Parameters (
params,...,*args) - (Signature) Overloading and Default Values
- Named Arguments
- (Definition) Overriding
- Recursion
- Callbacks, Higher-Order Functions, and Closures
- Network I/O
- Common Communication Protocols
- Annotations and Metadata (
@) - Version Tracking (Git/GitHub History/Log)
- Git Commit Message Conventions
- Git Commit Message Conventions
- Introduction
- Importance, Purpose, Use, and Value of Front-End Web Development
- Front-End Web Developer Profile
- User Interface / User Experience (UX/UI)
- Accessibility
- Responsive Web
- Absolute vs. Relative Paths
- Hyper Text Markup Language (HTML)
- Terminology (Element, Empty Element, Attribute, Tags, Container)
- Syntax and Structure
- Comments
- Formatting and Style Guidelines
- Global Attributes (
id,class,style,lang,title,data-*)- Event Hooks
- Document Structure (
!DOCTYPE,html,head,body)- Head Elements (
title,meta,link,style,script,base) - Body Elements (
h1-h6,p,a,img,ul,ol,li,table,tr,td) - Form Elements (
form,label,input,select,option,button)
- Head Elements (
- Inline vs. Block Elements
- Generic vs. Semantic vs. Style Elements (
divvssection,emvsi) - Entities, Symbols, and Emojis
- Cascade Style Sheets (CSS)
- Terminology (Declaration, Selector, Property)
- Syntax and Structure
- Comments
- Formatting and Style Guidelines
- Embedding in HTML (Link Element, Style Element, Style Attribute)
- Selectors (Universal, Element, Hierarchy, Id, Class, Pseudo-Element, Pseudo-Class, Attribute)
- Specificity (Order Stack, Point System, Style Attribute, !important Modifier)
- Absolute vs. Relative Units
- Color Values
- Generic Font Families
- Box Model (Content, Padding, Border, Margin/Outline)
- Layouts (Grid, Flexbox)
- Properties
- Alignment-Related (
position,display,top,right,bottom,left,margin) - Box-Related (
box-sizing,box-shadow,width,height,background,padding,border,margin,outline) - Text-Related (
font,text-*,caret,cursor) - Image-Related (
float,filter) - List-Related (
list-style-*) - Table-Related (
border-collapse,vertical-align) - Render-Related (
opacity,visibility,overflow) - Transitions and Animations (
transition,animation) - Transform (
transform,translate,scale,rotate,skew) - Miscellaneous (
clear,content,columns,resize,pointer-events)
- Alignment-Related (
- Custom Properties (or Variables)
- Dynamic Theming
- JavaScript (JS)
-
Review of General Programming Concepts
-
Execution Model
- Event Loop and Call Stack
- Single-Threaded Yet Asynchronous
- Hoisting
- Garbage Collection
- Strict Mode
-
Overview of Exclusive Features
- Data Types (
Number,BigInt,NaN,String,Boolean,Symbol,Array,Object,Function,null,undefined)- Type Systems: Static vs. Dynamic, Strong vs. Weak
- Operators
- Loose vs. Strict Equality (
==vs.===) - Type and Instance (
typeof,instanceof) - Rest / Spread (
...)
- Loose vs. Strict Equality (
- Expressions
- Dynamic Property Access (
obj.propNameorobj[propName]) - Dynamic Code Execution (
eval()) - Truthy / Falsy
- Destructuring Assignment
- Object Unpacking (
const {name, email} = contact;) - Array Unpacking (
const [first, second] = numbers;)
- Object Unpacking (
- Spread Syntax
- Object Copy (
const c = {...contact, email: newEmail};) - Array Copy (
const d = [...numbers, 5, 21];)
- Object Copy (
- Rest Parameters (
const [first, ...rest] = numbers;) - Short-Circuit Evaluation (
a && b,a || b) - Immediately Invoked Function (
(function() { ... })();)
- Dynamic Property Access (
- Control Structures
- Loops (
for...in,for...of) - Asynchronous (Promises + Calbacks,
async/await,then-catch-finally)
- Loops (
- Data Structures
- Maps and Sets
- Functions
- First-Class Citizens
- Higher-Order Functions and Closures
- '
this' Binding Rules
- Input/Output
- Console Err / Output
- Prompt, Confirm, and Alert Dialog Boxes
- Documentation
- JSDoc Format (
/** ... */)
- JSDoc Format (
- Data Types (
-
Environment APIs
- Browser Object Model (BOM) (Window, Navigator, Location, History, Screen)
- Document Object Model (DOM) (Tree, Event, Observers)
- CSS Object Model (CSSOM)
- Storage and Data Persistence (Local, Session, Cache, IndexedDB, Cookies)
- Networking and Communication (Fetch, XMLHttpRequest, WebSocket, EventSource, WebRTC)
- Location and Sensors (Geolocation, Orientation, Motion, Light, Proximity)
- Files, Media, and Streams (Blob, Streams, Recorder)
- Graphics and Visual (WebGL, SVG, Canvas, Web Animations, WebGPU)
- Performance, Timing, and Workers
- Security and Identity (Credential, Auth, Credential, CSP, Crypto, Clipboard, Payment)
- User Interface (Gestures, Speech Recognition / Synthesis, Notifications, Vibration)
- Hardware and Devices (USB, Bluetooth, Serial, HID, Gamepad, Battery, Fullscreen)
-
- Introduction
- Importance, Purpose, Use, and Value of Back-End Web Development
- Back-End Web Developer Profile
- System Quality Attributes
- Folder Structure
- Organized by Layers
- Organized by Features
- Choosing Between Them
- Architectural Models
- Client-Server
- Peer-to-Peer (P2P)
- N-Tier
- Distributed
- Architectural Components
- Infrastructure (Load Balancers, Nodes, Containers, Web Servers)
- Application Logic (Routers, Middleware, Controllers, Services, Repositories, Providers)
- Bringing It All Together: Example Scenario
- Architectural Styles, Approaches, and Patterns
- Application Program Interface (API) (REST, GraphQL, gRPC)
- Server-Side Rendered (SSR)
- Client-Side Rendered (CSR)
- Single-Page Application (SPA)
- Progressive Web Application (PWA)
- Server-Side (SSR)
- Client-Side (CSR)
- Hybrid
- Isomorphic
- Progressive Hydration
- Server-Centric
- Multi-Page Application (MPA)
- Static-Site Generation (SSG)
- Client-Centric
- Single-Page Application (SPA)
- Progressive Web Application (PWA)
- Hybrid
- Isomorphic / Universal Application (SSR+CSR)
- Micro-Frontend: (frontend microapps instead of backend microservices)
- Jamstack (JavaScript, APIs, and Markup)
- Islands
- Distributed or Emerging
- Edge-Rendered
- Serverless
- Reactive / Streaming
- DevOps and CI/CD Fundamentals
- Cloud Deployment and Containerization Basics
This work is licensed under a Creative Commons Attribution 4.0 International License (CC BY 4.0).