Lecture 1
Welcome to MTH 4300!
This course is titled Programming and Computer Science II. This means that I expect you to be familiar with programming. I understand that for some people, there might have been a good amount of time between now and when you took your first programming class. You are ultimately responsible for keeping up with the course material. I'll be here to assist, but I'm not here to build your fundamentals from scratch.
In this course, we'll be using C++, a programming language that gives us both control and abstraction, to explore the following topics: object-oriented programming, generics, data structures, and algorithms.
For the first lecture, we'll be covering the following:
Syllabus
Going over grading, homework, projects, etc.Dev environment setup
Whether its VSCode, Cursor, Zed, or CLion, we need to make sure that you have an environment ready to write C++
Hello, World! in C++
Get a little taste of writing C++. See if this class is for you
Syllabus
Diagnostic Quiz
During the first lecture of MTH 4300, we'll be taking a diagnostic quiz. This quiz does not factor into your grades, but does let you know how ready you are for this class
Pre-requisites
If you're taking this class, then you've accomplished one of the following:
- Completed MTH 3300
- Completed the CIS-equivalent course to MTH 3300
- Placed out of MTH 3300 into MTH 4300
If you have little to no programming experience, I would suggest dropping this class, but I won't stop you if you really want to stay.
Contact / Office Hours
If you need to contact me, you can reach me at jaime.abbariao@baruch.cuny.edu
Office hours are by appointment. Please contact me in advance if you need support.
Recommended materials
I don't have a textbook for this course. I expect that the internet and AI tools should suffice if you need references for C++.
This class expects that you'll build intuition for algorithmic thinking. To aid this effort, please make sure to consistently practice on LeetCode
Course Overview
This course serves as an introduction to C++, but with a focus on object-oriented programming, data structures, and algorithms.
Grading
| Criteria | Percentage |
|---|---|
| Final Exam | 25% |
| Midterm 2 | 25% |
| Midterm 1 | 25% |
| Quizzes | 15% |
| Problem Sets | 5% |
| Attendance/Participation | 5% |
Exams
All exams are closed-book, paper exams.
If you perform better on the final exam than your lowest midterm grade, the lowest midterm grade gets replaced by your final exam grade.
Exam Policy
- All personal belongings should be set at the front of the class
- No bathroom breaks during the exam. If there's an emergency, you can leave the classroom, but you forfeit your exam.
Unfortunately, I've caught students cheating. If caught, you will be reported for violating academic integrity and will receive an F in the course.
Problem Sets
Because of AI, problem sets hold little weight in your final grade. You should expect 4 problem sets throughout the semester that will be structured as mini-projects.
No late problem sets will be accepted.
Quizzes
We will have quizzes after every two lectures. These will take up about the first 45 minutes of class. You can think of these as mini-exams. Each quiz will be 3 questions that mimic the format of your exams.
No quizzes will be dropped so make sure that you keep up with the course material.
Attendance
Attendance is mandatory. I'll be taking attendance before we start class and if there's a quiz that day, that will substitute as your attendance.
If you have more than 4 unexcused absences throughout the semester, you will receive a WU for the course.
Curve
This class will be difficult and time-consuming for most students.
This is the type of class where the median grades have always fallen between 45-50 out of a 100.
This is by design because I want to you to be comfortable with approaching problems that seem too difficult for your current level.
That being said, grades are curved at the end such that the average performers get around a B.
Dev Environment Setup
Choosing your editor
You can use any text editor or IDE you're comfortable with. Here are some popular options:
- Visual Studio Code (Recommended): Free, lightweight, and works on all platforms. Install the "C/C++" extension by Microsoft.
There are other editors like Cursor, Antigravity, or even modal text editors like vim/neovim or emacs.
For any of these options, AI tools are generally enabled by default so please make sure to disable them while you're learning.
Installing C++
macOS
Open Terminal and run:
This installs the Apple Command Line Tools, which includes g++
Windows
Follow the instructions from the C/C++ for Visual Studio Code article
Make sure to add the path to MinGW to your PATH variables. A number of students forgot to do this last semester which caused confusion.
Test your installation
Open up your terminal and run:
If you see an error like "command not found", close your terminal and try again. If the problem persists, then you likely didn't add the path to the binary in your PATH variables.
Hello, World!
Once you have your dev environment setup, then create a file called hello_world.cpp
Insert the following code snippet into the file:
To run your code in C++, you have to first compile your code.
Then the following command will the program: