Welcome to CSE 1201 - Object Oriented Programming Language repository! This guide will help you set up your environment and start learning.
- System Requirements
- Installation
- Quick Start
- Repository Navigation
- Compiling and Running Programs
- Common Issues
- Learning Path
Windows:
- Windows 7 or later
- MinGW-w64 or Visual Studio with C++ support
macOS:
- macOS 10.12 or later
- Xcode Command Line Tools
Linux:
- Any modern Linux distribution
- g++ compiler (usually pre-installed)
All Platforms:
- Java Development Kit (JDK) 8 or later
- Any text editor or IDE (VS Code, IntelliJ IDEA, Eclipse)
- Download MinGW from mingw-w64.org
- Run the installer
- Add MinGW bin directory to PATH:
C:\mingw-w64\...\mingw64\bin - Verify installation:
g++ --version
- Open Terminal
- Install Xcode Command Line Tools:
xcode-select --install
- Verify installation:
g++ --version
# Update package list
sudo apt update
# Install g++
sudo apt install g++ build-essential
# Verify installation
g++ --version- Download JDK from Oracle or OpenJDK
- Run the installer
- Set JAVA_HOME environment variable
- Add Java bin directory to PATH
- Verify installation:
java -version javac -version
# Install using Homebrew
brew install openjdk@17
# Or download from Oracle/OpenJDK website
# Verify installation
java -version
javac -version# Install default JDK
sudo apt update
sudo apt install default-jdk
# Verify installation
java -version
javac -versiongit clone https://github.com/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language.git
cd CSE-1201-Object-Oriented-Programming-Language# Navigate to first lecture
cd "OOP in C++/Lecture_01: An Overview of C++/1. C++ Console I and O"
# Compile
g++ 1.cpp -o hello
# Run
./hello # Linux/Mac
hello.exe # Windows# Navigate to Java code examples
cd "OOP in Java/Code_Example"
# Compile
javac Student.java
# Run
java StudentOOP in C++/
├── Lecture_01/ # Basics: Console I/O, Comments, Classes
├── Lecture_02/ # Constructors, Destructors
├── Lecture_03/ # Object Assignment, Friend Functions
├── Lecture_04/ # Arrays, Pointers, References
├── Lecture_05/ # Function Overloading
├── Lecture_06/ # Operator Overloading
├── Lecture_07/ # Inheritance
├── Lecture_08-09/ # I/O System
├── Lecture_10/ # Virtual Functions, Polymorphism
├── Lecture_11/ # Templates, Exception Handling
├── Lecture_12-14/ # Advanced Topics, STL
└── Practice/ # Practice Problems
OOP in Java/
├── Chapter 1-4/ # Basics: Variables, Control Structures
├── Chapter 5-8/ # Loops, Methods, Arrays
├── Chapter 9-10/ # Classes, Objects, OOP Thinking
├── Chapter 11-13/ # Inheritance, Exceptions, Interfaces
└── Code_Example/ # Additional Examples
# Simple compile
g++ filename.cpp -o outputname
# Run
./outputnameg++ -g filename.cpp -o outputnameg++ -O2 filename.cpp -o outputnameg++ -std=c++11 filename.cpp -o outputname
g++ -std=c++17 filename.cpp -o outputnameg++ file1.cpp file2.cpp -o outputname# Compile
javac ClassName.java
# Run
java ClassName# Compile with package
javac -d . PackageName/ClassName.java
# Run with package
java PackageName.ClassName# Compile all java files in directory
javac *.java
# Or specific files
javac File1.java File2.javaIssue: "g++ command not found"
- Solution: Install g++ compiler or add to PATH
Issue: "undefined reference to..."
- Solution: Link all necessary files during compilation
Issue: Header file not found
- Solution: Ensure header files are in the same directory or use
-Iflag
Issue: "javac/java command not found"
- Solution: Install JDK and add to PATH
Issue: "Could not find or load main class"
- Solution: Ensure class name matches filename, check CLASSPATH
Issue: "UnsupportedClassVersionError"
- Solution: Ensure JDK and JRE versions match
-
Week 1: C++ Basics
- Console I/O
- Variables and Data Types
- Basic Program Structure
-
Week 2: Introduction to Classes
- Class Definition
- Objects
- Constructors and Destructors
-
Week 3: Member Functions
- Access Specifiers
- Encapsulation
- Object Interactions
-
Week 4: Java Basics
- Java Syntax
- Classes in Java
- Comparison with C++
-
Week 5: Arrays and Pointers (C++)
- Arrays of Objects
- Pointers to Objects
- References
-
Week 6: Function Overloading
- Function Overloading
- Default Arguments
- Copy Constructors
-
Week 7: Operator Overloading
- Binary Operators
- Unary Operators
- Assignment Operator
-
Week 8: Inheritance
- Single Inheritance
- Multiple Inheritance
- Protected Members
-
Week 9: Polymorphism
- Virtual Functions
- Abstract Classes
- Runtime Polymorphism
-
Week 10: I/O Systems
- File I/O in C++
- Formatted I/O
- Java I/O
-
Week 11: Exception Handling
- Try-Catch Blocks
- Custom Exceptions
- Exception Hierarchies
-
Week 12: Templates (C++)
- Function Templates
- Class Templates
- STL Basics
-
Week 13: Advanced Java
- Interfaces
- Abstract Classes
- Packages
-
Week 14: Final Projects
- Comprehensive Projects
- Exam Preparation
- Review
- Follow the Order: Start with Lecture 1/Chapter 1 and progress sequentially
- Practice Daily: Code along with examples
- Read Documentation: Each folder has detailed markdown guides
- Experiment: Modify code to understand behavior
- Debug: Use print statements to understand program flow
- Review: Regularly revisit earlier topics
If you encounter issues:
- Check the Common Issues section
- Review lecture notes and documentation
- Search for error messages online
- Open an issue on GitHub
- Refer to CONTRIBUTING.md
- cplusplus.com - C++ Reference
- cppreference.com - Comprehensive C++ Reference
- Oracle Java Tutorials - Official Java Tutorials
- GeeksforGeeks - Programming Examples
C++:
- Visual Studio Code (Free, Cross-platform)
- CLion (Paid, Student license available)
- Code::Blocks (Free, Cross-platform)
Java:
- IntelliJ IDEA (Free Community Edition)
- Eclipse (Free, Cross-platform)
- NetBeans (Free, Cross-platform)
Once you're comfortable with the basics:
- Complete practice problems
- Attempt exam materials
- Build your own projects
- Contribute to the repository
- Help other learners
Happy Coding! 🚀
If you find this guide helpful, please ⭐ star the repository!