Command Palette

Search for a command to run...

MTH 4300

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:

  1. Syllabus

    Going over grading, homework, projects, etc.
  2. Dev environment setup

    Whether its VSCode, Cursor, Zed, or CLion, we need to make sure that you have an environment ready to write C++

  3. 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.

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

CriteriaPercentage
Final Exam25%
Midterm 225%
Midterm 125%
Quizzes15%
Problem Sets5%
Attendance/Participation5%

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:

xcode-select --install

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:

g++ --version

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:

hello_world.cpp
#include <iostream>

int main() {
  std::cout << "Hello, World!" << std::endl;
  return 0;
}

To run your code in C++, you have to first compile your code.

g++ -o hello_world -std=c++20 hello_world.cpp

Then the following command will the program:

./hello_world