https://chua.bitbucket.io yet another insignificant... programming notes (avaliable @ https://chua.bitbucket.io and https://www3.ntu.edu.sg/ home/ehchua/programming/index.html) HowTo | Java | Database | ClientSide | ServerSide | Webapp | Game | OpenGL | C/ | Android C++ Before Getting Started... * Programmer's Survival Guide for Windows * Programmer's Survival Guide for macOS & Ubuntu * Source-Code Editors & IDEs IM1003 Object-oriented Programming * (Week 1) Install JDK and Sublime Text * (Week 3) Install Eclipse (or VS Code or NetBenas or IntelliJ) Java Basics * 1. Introduction to Java Programming * 2. Java Basics * Exercises: Java Basics * Online Submission Exercises: Java Basics Java OOP * 3a. OOP Basics * 3b. OOP Composition, Inheritance & Polymorphism * 3c. OOP Wrapping-Up * Exercises: OOP * 3d. String is Special * 3e. JDK New Language Syntaxes (JDK 7 to 2X) Java Graphics * 4a. Graphical User Interface (GUI) * 4b. Custom Graphics * Exercises: Graphics Programming Case Study / Assignment * Introduction - Tic-tac-toe * Game Programming Assignment - Sudoku * Game Programming Assignment - Mine Sweeper * Java Game Framework and Snake Game * Game Programming Assignment - Tetris IM2073 Web Programming * Week 1: How to Install MySQL Server and Get Started with SQL * Week 2(a): Introduction to Java Database Programming * Week 2(b): How to Install Tomcat Server and Get Started with Java Servlet Programming * Week 3: WebApp Case Study IM2073 Mobile (Android) Programming * Week 1: Android - How to install & Get Started * Week 2: Android - Basics: User Interfaces and Activities * For your project: Timer, logging and debugging * For your project: Building Webapps with WebView How to Install & Get Started... * JDK * Environment Variables (PATH, CLASSPATH, JAVA_HOME) * Eclipse IDE for Java * VS Code * NetBeans for Java * IntelliJ IDEA for Java * Eclipse for C/C++ * CodeBlocks for C/C++ * Tomcat 10 * Tomcat 7/8/9 (old) * More Tomcat 7 (old) * Apache 2.2 - How to Install * Apache 2.2 - How to Configure * Apache 2 with Tomcat 6 * MySQL * Git * Wiki Text Windows * Programmer's Survival Guide for Windows * Windows Basics * Cygwin & MinGW (for Windows) * Visual C++ 2010/2008 Express Unix, Ubuntu Linux & macOS * Programmer's Survival Guide for macOS & Ubuntu * Unix Basics * Ubuntu Desktop - Install & Setup * Ubuntu Server - Install & Setup * macOS - JDK, MySQL, Tomcat... Android * Android - How to install & Get Started * Android - Basics and User Interfaces * Android - More Basics * Android - Custom 2D Graphics * Android - 3D Graphics in OpenGL ES * Android - Networking * Android - Bluetooth * Android - Native Development Kit (NDK) Arduino * Arduino - Get Started Power User Software Notes * Windows * Word, Excel, Dreamweaver ICPC * Getting Started * Tips, Trick & Tweaks * PC^2 (U/C) Java Programming - Part I For First-Time Programmers * 1. Introduction to Java Programming For New Comers to Java & OOP * 2. Java Basics * Exercises: Java Basics * 3a. OOP Basics * 3b. OOP Composition, Inheritance & Polymorphism * 3c. OOP Wrapping-Up * Exercises: OOP * 4a. String is Special * 4b. Enumeration (enum) (JDK 5) * 4c. Exception Handling & Assertion * 4d. JDK New Language Syntaxes (JDK 7 to 2x) * 4e. Java Reference Power Programmers * Data Representation - Integers, Floating-Point Numbers & Character Sets * Regular Expression (Regex) Java Programming - Part II Intermediate Java * 5a. Graphical User Interface (GUI) * 5b. Graphical User Interface (GUI) Part 2 * 5c. Graphical User Interface (GUI) Part 3 * 5d. Custom Graphics * Exercises: Graphics Programming * Case Study: Graphics Programming - Tic-tac-toe * Case Study: Graphics Programming Part II - AI * 5e. Applet & WebStart Application * 5f. Swing - Templates, Misc & How-To * 5g. JavaFX - Introduction * 6a. Multithreading * 6b. Basic Input & Output (I/O) * 6c. Advanced I/O * 6d. Networking * 7a. The Collection Framework, Part 1 (JDK 5) * 7b. Generics (Since JDK 5) * 7c. Annotation (JDK 5) * 8a. Interface, Lambda Expr, Streams & Functional Prog. (JDK 8-11) * 8b. Collection Framework, Part 2 (JDK 8) * 9a. Java Module System (JDK 9) Special Topics in Java * Java Unit Testing - JUnit & TestNG * Java Build - Ant & Maven [TODO] * Calendar, Date and Time * XML and Java * Regular Expression (Regex) and Java * JavaBeans * Java Logging Framework * Java Native Interface (JNI) Java Appendices * JDK API Documentation * Packages and CLASSPATH * Java Archive (JAR) * Java Miscellaneous How-To * JDK 5 New Features * JDK 6 New Features * JDK 7 New Features * JDK 8 (LTS) New Features * JDK 9 New Features * JDK 10 (18.3) New Features * JDK 11 (18.9) (LTS) New Features * JDK 12 (19.3) New Features * JDK 13 (19.9) New Features Java ME (Obsoleted) * 1. Java ME: Getting Started, Basics & Game Programming Java Game Programming * 1. Introduction: The World of Bouncing Balls * 2. 2D Graphics, Java 2D and Images * 3. Playing Sound * 4. Java Game Framework and Snake Game Client-Side Programming HTML/CSS * HTML/CSS Basics * HTML/CSS Intermediate * More HTML5/CSS3 * HTML/CSS Tips & How-To JavaScript * JavaScript Basics * JavaScript ES6 and beyond * jQuery & Ajax * JavaScript/jQuery Advanced Examples Client-Side Frameworks * Bootstrap, Font Awesome, Parsley and Others * AngularJS Node.js & Server-Side JavaScript * 1. Node.js Basics Database Programming MySQL/MariaDB * 1. MySQL 1: How to Install and Get Started * 2. MySQL 2: By Examples for Beginners * 3. Relational Database Design * 4. MySQL 3: Intermediate * 5. SQL Sample Databases * 6. MySQL 4: Miscellaneous * 7. MySQL Utilities JDBC * 1. Introduction to Java Database Programming (JDBC) * 2. JDBC - Part 2 * 3. JDBC Intermediate PostgreSQL * 1. PostgreSQL: Get Started MongoDB * 1. MongoDB: Get Started Server-side Programming Jakarta Servlet / JSP / JSF * 0a. How to Install MySQL Server * 0b. How to Install Tomcat Web Server * 1. Servlets Case Study * 2. Jakarta/Java EE IDEs * 3. Servlets Explained * 4. Tomcat's Servlet Examples Explained * 5. Servlets Case Study (Part 2) * 6. Advanced Tomcat * 7. Getting Started with JSP by Examples * 8. JavaServer Pages (JSP) * 9. JavaServer Faces (JSF) * 10. Java Web Database Applications * 11. Struts * 12. Java Web Services PHP * 0. Setup AMP (Apache/MySQL/PHP) * 1. PHP Basics * 2. PHP/MySQL Webapps * 3. OOP in PHP * 5. PHP Miscellaneous * 6. PHP Unit Testing Perl * 1. Perl Basics * 2. Regular Expression, File IO & Text Processing Python * 0. Python Get Started * Python By Examples * 1. Python Basics * 1a. Python File & Text Processing * 2. Python OOP * 3. Python Data Analytics * 4. Python Database & Webapp * 5. Python Webapp with Flask Webapps Basics * Terminology Testing * Webapp Acceptance Testing with Selenium Security * Advanced Webapps Security Misc * Advanced Webapps Tips Blockchain * Ethereum Smart Contract * Bitcoin Web Protocols * HTTP 1: Basics * HTTP 2: State Management * HTTP 3: Authentication * HTTP 4: SSL 3D Graphics & OpenGL Setup on Various Platforms * OpenGL in C/C++ * JOGL 2.0 | JOGL 1.1 * LWJGL 2.8 * Java 3D Computer Graphics with OpenGL * CG 1. Introduction to OpenGL * CG 2. Computer Graphics - Basic Theory * CG 3. OpenGL Examples * CG 3. Computer Graphics - Curves & Surfaces [TODO] * CG 4. OpenGL Shading Language (GLSL) [TODO] * References & Resources OpenGL|ES * 3D Graphics in OpenGL ES (for Android) Physics Engine * Bullet Physics & JBullet Physics Engine C/C++ Programming C++ Programming Language * 0. C++ Introduction * 1. C++ Basics * 2. C++ More Basics * 3. C++ OOP Basics * 4. C++ Pointers, References & Dynamic Allocation * 5. C++ OOP Examples * 6. C++ OOP Inheritance & Polymorphism * 7. C++ Operator Overloading * 8. C++ Template & Generic Programming * 9. C++ Strings * 10. C++ Libraries & STL * 11. C++ IO Streams & File IO * 12. C++ Misc, Tips & Traps * 13. Data Structure and Algorithm in C++ C Programming Language * 0. C Introduction * 1. C Basics C/C++ Compilers and IDEs * GCC and Make * CodeBlocks for C/C++ * Eclipse for C/C++ * Visual C++ Last modified: March, 2021 Feedback, comments, corrections, and errata can be sent to Chua Hock-Chuan (ehchua@ntu.edu.sg) | TOP These are my teaching notes which I share with anyone interested. I update some articles more often than others, based on feedback received on the usefulness of the articles.