§1 Instructor Information #

I am a professional software engineer and an adjunct professor of Computer Science, dedicated to bridging the gap between academic theory and professional practice. I hold a Bachelor’s Degree in Computer Science with a specialization in cybersecurity from California State University, San Bernardino.
As an Operations Engineer & Software Developer (DevOps) at Lawrence Livermore National Laboratory, I specialize in distributed systems architecture, containerization, and Site Reliability Engineering (SRE). My goal is to share this real-world expertise, ensuring students gain practical insights alongside a strong theoretical understanding. Beyond my primary roles, I actively contribute to open-source projects and enjoy mentoring new developers.
Office Hours
Monday & Thursday 12:00 PM - 1:00 PM on Zoom
You can contact me anytime via Canvas messages or email. I respond to messages within 48 hours during the week. If you don’t receive a response within two days, please send a follow-up message.
I do not ignore messages. In previous semesters, Canvas messages sometimes failed to arrive, but email has proven reliable. Please do not hesitate to follow up if you do not receive a response.
§2 Course Description #
This course is an introduction to object-oriented programming using C++. Topics are centered around Object-Oriented Programming (OOP) principles and C++ syntax, including declarations, constants, operators, function calling by value and reference, strict type checking, function members and overloading, inheritance, derived classes, protected members, and virtual functions.
This is a fully online, asynchronous course. Both lecture and lab components are delivered digitally, and there are no mandatory live Zoom meetings (office hours are optional).
You will need to work independently and dedicate a significant amount of time on a computer to complete coursework and lab assignments. This is a 4-credit course, consisting of 54 hours of lecture and 54 hours of lab work.
§3 Course Requirements #
CISP 360 with a grade of “C” or better.
§4 Student Learning Outcomes #
Upon completion of this course, students will be able to:
- Compare and contrast structured and object-oriented software design methodologies.
- Design and implement object-oriented software applications using Unified Modeling Language (UML) and C++.
- Design and implement reusable software components using inheritance, containment, and polymorphism (overload, overrides, templates, virtual or pure virtual classes, and generic classes).
§5 Course Topics #
This course will cover the following topics:
- Introduction to the Linux/UNIX environment: logging on to and off from the Linux/UNIX server; changing the user password; basic Linux/UNIX commands; creating and navigating directories; using the help pages; using Linux/UNIX text editors; creating a simple C/C++ source code file; compiling source code and linking object code; running the executable files
- Review of the C programming language: basic C Syntax; operator precedence and associativity; casting, coercion, and promotion; storage classes; scope rules; arrays; functions and prototypes; pointers; arrays of pointers; enumerated types
- C and C++ programming; syntax: void and blank function parameters; const versus #define; inline template functions versus macros; strict type checking; pass by reference and pass by value; passing pointers by value and by reference; default parameter values; casting; type bool, zero, non-zero; recursion
- Introduction to basic C++ classes: review of the C struct; objects; data members; member functions; constructors; destructors; private and public; automatic initialization and clean-up; initialization versus assignment
- Basic C++ classes: encapsulation; data abstraction and information hiding; user interface’ multiple files: header versus source/object; public versus private member functions; operator overloading; the “this” pointer; the pre-processor and multiple header file inclusion; Linux/UNIX make files and automatic compilation
- Intermediate C++ classes: operator overloading and friend functions; data member access functions; const and static member functions; const and static data members; pointer data members; reference data members; dynamic memory management; Unified Modeling Language (UML) as tool to build design model
- Container and proxy classes: iterators; implementation hiding; pointers to classes; pointer initialization; forward class declaration
- Inheritance basics: base and derived classes; the “is a” relation; pointers to base class and derived class objects; protected members; non-virtual, virtual, and virtual functions
- Inheritance intermediate: redefining a non-virtual function and default parameters; down casting; abstract base classes; direct and indirect base classes; function overriding; inheritance and friend functions; composition versus inheritance; UML modeling Inheritance
- Inheritance advanced; dynamic type versus static type; the hiding and slicing problems; the copy constructor and inheritance; the virtual function table; polymorphism; virtual destructors
- Private inheritance: the “has a” relationship; private inheritance and abstract base classes; private inheritance versus composition
- Multiple public inheritance: naming conflicts; intermediate classes
- C++ interactive input and output: class ios and multiple inheritance; classes istream, ostream, and iostream
- C++ file input and output: classes ofstream, ifstream, and fstream; text and non-text files; file manipulation; file structures: random access versus sequential access
- Exception handling: types of errors; error handling schemes; asynchronous versus synchronous errors; try, throw, and catch; stack unwinding; exceptions and inheritance; processing operator new failures; re-throwing an exception
- Template classes: class design; pre-compiled object code; member and friend functions; software design: templates versus inheritance
- Standard template library; vector: member functions and operators; list: member functions and operators; iterators
- Smart pointers; lazy evaluation; deep copy versus shallow copy; reference counting; automatic garbage collection; dynamic versus static memory
- Final Examination; Project Presentation and Discussion
§6 Textbook (Optional) #
The textbook for this course is Starting out with C++/Early objects, 10th Ed; Gaddis.
The book is optional and not required for this course. I will not assign work from the textbook. I will however refer to sections from the book and other free online sources to provide additional information and further reading on class topics.
§7 Teaching Philosophy #
My teaching philosophy is grounded in the belief that the most effective learning occurs through practical experience. In my classes, I emphasize projects that mirror the challenges that students may encounter in a professional software development role. My goal is to equip students with the skills and knowledge to confidently transition from the classroom to the workplace.
Rather than focusing solely on theory, I design coursework that requires students to solve practical problems using the topics covered in class. Students will design, develop, and iterate on several large, practical projects and engage in tasks such as code reviews, debugging, refactoring, and code architecture design.
Collaboration and continuous feedback are key components of my approach. I provide feedback that addresses the technical accuracy of your work and offers insights into industry best practices. I intentionally design my projects allow for creative freedom while demonstrating how course topics can be applied in real-world scenarios. My aim is to prepare you for professional roles, equipped with both technical skills and practical experience.
You will find that most assignments require write-ups or written responses. This is intended to help you practice and enhance your ability to communicate about programming. Effective communication is a crucial skill for any successful software engineer.
§8 AI #
The use of AI tools is allowed and, in some cases, encouraged in my course. I include several assignments that demonstrate useful ways to employ Large Language Models (LLMs), as they can help you rapidly complete necessary yet tedious tasks.
This course emphasizes project-based learning, with projects constituting the majority of your final grade. These projects are designed to be challenging for LLMs to complete without significant human intervention, though they are absolutely achievable by students who have engaged with the course material without AI.
To succeed in this course, students must genuinely learn the material. Those who depend solely on AI will find themselves unprepared for later projects, which are weighted heavily in the final grade and are essential for passing this class.
§9 Course Structure and Expectations #
Online Lecture: The lecture portion of this course is delivered online, with all materials available on Canvas. Although the course is asynchronous, it is not self-paced. You are expected to engage with course materials and complete assignments weekly. You will need to manage your own learning and contact me if you need assistance.
Assignments: Assignments and labs will be published on Canvas weekly, with due dates generally one week from the publish date. More time will be provided for larger assignments and projects.
The types of assignments you can expect are:
- Labs
- Programming Assignments
- Projects
- Exams
- Discussion board postings
You can typically expect to spend up to 10 hours each week on assignments to be successful in this class.
§10 Grading Information #
Points for this course are allocated as follows:
| Weight | |
|---|---|
| Midterm Exam | 5% |
| Labs | 25% |
| Projects | 45% |
| Assignments | 15% |
| Final Exam | 5% |
| Discussions | 5% |
| Grading Scale | |
|---|---|
| A | 90% - 100% |
| B | 80% - 89% |
| C | 70% - 79% |
| D | 60% - 69% |
| F | 59% or less |
There will be opportunities for extra credit through additional assignments that explore topics related to the course.
§11 Late Work & Make-up Policy #
Most assignments have a “Due Date” and a later “Close Date”. Any assignments that are first submitted after the “Due Date” will have a -25% “Late” penalty applied. No submissions will be accepted after the “Close Date” without prior approval. Please contact me if you have extenuating circumstances and are in need of additional time, extensions will be granted on a case-by-case basis.
For labs and assignments that are submitted on time, you will receive feedback and be allowed to resubmit for an improved grade up until the “Close Date.” I want you to learn from your mistakes, not be punished for them. This benefit does not extend to submissions after the “Due Date,” so please submit your work on time. A partially complete submission is always better than no submission.
Please note that some assignments involve collaboration with other students and will have more stringent “close dates” to respect everyone’s time. The strict due date will be made clear on those assignments.
§12 Midterm & Final Exam #
A midterm examination will be administered online and will cover material studied up to that point. To accommodate potential technical issues, the exam will be available over a four-day period, with a duration of 3 hours. You can start the exam on any day within the four-day window but must complete it within the 3-hour time limit. The exam must be taken on Canvas.
The final examination will be conducted online and will be cumulative. Like the midterm, the final will be available over a four-day period with a 3-hour time limit. The exam must be taken on Canvas.
Additionally, a final project will be assigned. Failure to complete both the final project and the final exam will significantly harm your standing in the course.
§13 Course Expectations and Communication #
Class Attendance and Participation: In this online class, attendance is tracked through your participation. You must complete the Week 1 assignments and discussion during the first week of class. Students who do not will be dropped from the course in accordance with Sacramento City College’s attendance policy. All students are expected to actively participate and complete assignments, quizzes, and exams by the deadlines on Canvas.
Student Drop Policy: If you encounter challenges that hinder your ability to complete the course, please reach out to me. I am here to support you. However, if you decide to drop the class, it is your responsibility to notify the admissions and records office.
Accessing Canvas: Assignments, readings, and resources are accessible on Canvas. Regularly logging in is essential, as it is the main platform for communication. I will post all assignments under the “Modules” section, and any important updates will be posted to the “Homepage.” To create an account and learn how to use Canvas, please visit the Los Rios Canvas homepage.
Programming Platforms: GitHub Classrooms will be used for assignment distribution and submission. Each student will be provided with a Visual Studio Code workspace through GitHub Classrooms. Alternatively, students are welcome to use their own locally installed IDEs
Official Correspondence: All official communications from me and the Los Rios Community College District will be sent to your Los Rios Gmail account (e.g. w1234567@apps.losrios.edu) and/or your Canvas account. Please ensure both accounts are active and check them regularly. Visit the Los Rios Student single-sign-on page for more information.
§14 Academic Honesty #
You are expected to uphold the highest standards of academic integrity. This course abides by all stipulations in the college’s Student Code of Conduct.
You are encouraged to form study groups and use tutorial services, but all work submitted for grading must be your own.
Copying another student’s work and submitting it as your own is an act of academic dishonesty. It is also dishonest to give answers to another student or allow them to copy your work. Additional information can be found in the statement of Academic Rights and Responsibilities.
Should an act of academic dishonesty occur, a grade of zero will be given for the assignment, and the matter may be referred to the Business & CIS Division Dean and/or Campus Discipline Officer for further action.
§15 Accommodations/Support #
I am dedicated to ensuring this course is inclusive and accessible. If you face any barriers, please inform me so we can explore possible adjustments or accommodations. I am open to creative solutions, provided they maintain the integrity of the assessment. You are also encouraged to contact the Disability Services & Programs for Students (DSPS) office to discuss accommodations.
- DSPS Information: Students with disabilities who may need academic accommodations are encouraged to discuss their authorized accommodations from Disability Services & Programs for Students (DSPS) with their professors early in the semester so that accommodations may be implemented as soon as possible. If you do not have accommodation and believe that you need them please contact DSPS.
- Location: Student Services Building, STS 104
- Phone: (916) 558-2087, VP (916) 374-7218
- Website: DSPS Homepage
- Some things to remember:
- DSPS accommodations are NOT optional.
- DSPS accommodations MUST be on the official form (not just what the student says)
- Contact DSPS if you have any questions related to authorized accommodations in your classroom.
- Not all students with disabilities use our services.
- Many students have invisible disabilities, including chronic pain, diabetic complications, panic attacks, attention deficit, autism spectrum, learning disabilities etc.
- DSPS student status is always confidential.
- Here is the link to faculty resources on our DSPS webpage (Links to an external site.): (Links to an external site.)
Tutoring: Free Computer Science tutoring is available at the CIS Labs in LRC 141 and LRC 144.
Student Counseling: SCC Counseling provides academic, career, personal, and crisis counseling. SCC Counseling Homepage
Student Health Center: The Student Health & Wellness Centers offer health and wellness resources. Student Health Center Homepage
SCC Library: Library Homepage
Equipment: If you need hardware, software, or other tech help, please contact SCC IT.
- Email: scchelpline@scc.losrios.edu
- Phone: (916) 558-2222
Canvas Help: You can use the Help button on the lower-left corner of the Canvas navigation bar to contact the support team.
- Phone: (916) 568-3199 (24/7 Support)
- Canvas Student Tour
- Canvas Student Getting Started Guide
- Canvas Student Guide
Student Tech Center:
- Website: Student Tech Support Website
- Phone: (916) 558-2049
- Text: (916) 346-0435
- Email: scc-pantherhelp@scc.losrios.edu
- Location: First Floor of the Learning Resource Center (LRC)
Additional Help:
Behavior and Conduct: