ECS 036B Syllabus: Software Development & Object-Oriented Programming in C++

The ECS 036B Syllabus, titled “Software Development & Object-Oriented Programming in C++,” introduces students to essential concepts in software development through the lens of C++. This course covers object-oriented programming (OOP) fundamentals such as classes, inheritance, polymorphism, and encapsulation. Students gain practical experience by working on projects that involve problem-solving, design, and implementation of software using C++. Topics such as memory management, data structures, algorithms, and code optimization are explored, preparing students for more advanced programming concepts and real-world software engineering challenges. Check ECS 036B Syllabus in details.

ECS 036B Syllabus- Software Development and Object-Oriented Programming in C++

Units: 4.0
Status: Active
Effective: Fall 2018
Learning Activities:

  • Lecture: 3 hours per week
  • Discussion: 1 hour per week

Course Description:

This course focuses on learning object-oriented programming in C++, understanding basic data structures, and writing efficient programs. It covers techniques for debugging and verification of programs. Students who have taken similar courses like ECS 032B, ECS 032C, ECS 034, ECS 040, or ECS 060 won’t get credit for this course.

General Education (GE): Science & Engineering

Prerequisites:
Students must have passed ECS 030 or ECS 036A with a grade of C- or better.

Credit Limitation:
Students who have taken courses like ECS 032B, ECS 032C, ECS 034, ECS 040, or ECS 060 cannot earn credit for this course.

Enrollment Restrictions:

  • Pass One: Open to majors in Computer Science, Computer Science & Engineering, and Computer Engineering.
  • Pass Two: Also open to majors in Applied Physics and Cognitive Science.

Main Topics Covered:

  1. Object-Oriented Programming in C++
    • Learn key concepts like polymorphism, operator overloading, encapsulation, inheritance, and handling exceptions.
  2. Programming in C
    • Understand basic syntax, how C differs from other languages (like Python), and the differences between C and C++.
    • Learn about arrays, character strings, structures, pointers, dynamic memory, and system files.
    • Work with function pointers, function declarations, and parameters.
  3. Software Engineering Tools
    • Use Integrated Development Environments (IDEs) and debugging tools like gdb/ddd in UNIX.
    • Learn version control, unit testing (e.g., GoogleTest), and program development using third-party libraries.
    • Understand how to organize code with the UNIX “make” program.
  4. Advanced Programming in C++
    • Explore linked lists, recursion, and possibly topics like binary trees, stacks, and queues.
    • Work with templates, the Standard Template Library (STL), and modern C++ features.

Recommended Reading:

  • Book: C++ Primer (5th Edition) by Stanley Lippman, Josee Lajoie, and Barbara Moo.

Course Overlap:

ECS 36B and ECS 40 both teach object-oriented programming, and ECS 34 also overlaps with some of the content.

ECS 036B Syllabus Topics wise

The ECS 036B course—Software Development & Object-Oriented Programming in C++—typically covers intermediate concepts of software development with a focus on object-oriented principles using C++. While exact details may vary based on the institution, a general outline of topics would look like the following:

  1. Introduction to C++ and Software Development
    • Overview of C++ language
    • Compilation and execution of programs
    • Development environments and tools
    • Introduction to basic data types, operators, and control structures
    • Functions and parameter passing
  2. Object-Oriented Programming (OOP) Concepts
    • Classes and Objects
    • Encapsulation and data hiding
    • Constructors and Destructors
    • Static members and methods
  3. Inheritance and Polymorphism
    • Single and Multiple Inheritance
    • Virtual functions and dynamic binding
    • Abstract classes and interfaces
    • Function overloading and operator overloading
  4. Memory Management
    • Pointers and dynamic memory allocation
    • Smart pointers and RAII (Resource Acquisition Is Initialization)
    • Copy constructors and assignment operators
    • Shallow vs. deep copying
  5. Templates and Generic Programming
    • Function and Class Templates
    • Specialization and overloading
    • Standard Template Library (STL) – vectors, stacks, queues, lists, and iterators
  6. Exception Handling
    • Basics of exception handling in C++
    • try-catch blocks and exception propagation
    • Creating custom exception classes
  7. File I/O
    • Streams and file handling
    • Reading from and writing to files
    • Binary vs. text file operations
  8. Advanced OOP Concepts
    • Operator overloading
    • Friend functions and classes
    • Namespaces and scope resolution
  9. Software Development Practices
    • Software design and documentation
    • Version control systems (e.g., Git)
    • Unit testing and debugging techniques
    • Modular programming and code reuse
  10. Project
    • Implementation of a larger-scale C++ project that incorporates object-oriented principles
    • Emphasis on proper software development methodologies, testing, and documentation

Assessment Components

  • Quizzes/Assignments: Regular problem sets focusing on C++ syntax, OOP concepts, and algorithms.
  • Midterm/Final Exams: Testing understanding of theory and implementation.
  • Programming Projects: Building applications demonstrating object-oriented principles and using C++ standard libraries.
  • Participation: Contribution to class discussions and coding labs.

Leave a Comment