Skip to content

mab253/cpp_fall23

Repository files navigation

CS10300 - 🤖🖥️🪲 Introduction to Computing for Majors

Instructor: Professor Madeline Blount
Term: Fall 2023
Time: Mondays/Wednesdays 11:00-11:50am (lecture)
Space: Marshak 117 (lecture)
Recitation: lab on Fridays (time based on section, CC1 or CC2), w/instructor Chunyu Yuan, NAC 7107
Office Hours: virtual by appointment, schedule here
E-mail: Madeline Blount - mblount@ccny.cuny.edu, Chunyu Yuan - cyuan1@gradcenter.cuny.edu
City College, City University of New York

course description

This is an introduction to computing, intended for those majoring in computer science and engineering. The course will cover the basics of how a computer works; memory, variables, and data types; branching, conditionals, and logic; loops and functions; transitioning from procedural and functional programming to the basics of object-oriented programming; and an introduction to algorithms and recursion

what will we learn in this class?

  • We will learn the basics of computer programming with C++
  • We will cultivate computational thinking in how we approach solving problems
  • We will learn the importance (and joy!) of the iterative process of coding and debugging
  • We will think about the real-world context of programming today as we grow as coders
  • We will develop an awareness of the interdisciplinary applications and intellectual foundations of computer science

course format

This course will generally meet in-person, with a lecture 2 mornings per week (M/W). There is also a (required) recitation on Friday mornings with instructor Chunyu Yuan.

🎥 There will be times throughout the semester, approximately 1x per month, when I will film a lecture instead of giving one in person. When I post a video instead, you will be free to watch it in your own time. These asynchronous lectures will be clearly marked on the schedule. In the case of any change in the schedule, I will announce this change ahead of time via Blackboard/e-mail.

We will use an online textbook (zyBooks) to guide us through learning C++. In the zyBooks platform, you will have readings with interactive homework exercises, as well as labs (like programming problem sets) from the same textbook.

Each week, zyBooks homework will be due:

  • 📚readings w/questions on Wednesday evenings, by 11:59pm
  • 🥽 lab assignments on Fridays, by 11:59pm

NOTE: Learning C++ is like learning any new language - it's important to keep practicing, immersing yourself, and moving forward, a little bit at a time. I highly suggest you start the readings early in the week so that our time in-person will be most useful to you! You won't need to submit the reading homework for grading until Wednesday night, but it will be helpful for you to avoid doing it all at once ... you can't cram the process of becoming a programmer!

There will be a take-home mid-term exam in this course, and a final programming project. There is no final exam.

important info:

key dates
materials & references
tools
expectations & requirements
evaluation
academic honesty & integrity
contact & questions

SCHEDULE, ASSIGNMENTS, READINGS:

💥subject to change

Week 0: Aug. 28 & Aug. 30
Introductions, Hello World!

Assignment: set-up assignments + survey here
SET-UP + SURVEY DUE: Friday Sept. 1, 5:00pm
Also begin zyBooks, Week 1 Readings


Week 1: Sept. 6
Beginnings of Computing and C++

Assignments:
zyBooks Week 1, Readings: DUE Sept. 6, 11:59pm
zyBooks Week 1 Lab: DUE Sept. 8, 11:59pm


Week 2: Sept. 11 & Sept. 13
Variables and Data Types

Assignments:
zyBooks Week 2, Readings: DUE Sept. 13, 11:59pm
zyBooks Week 2 Lab: DUE Sept. 15, 11:59pm


Week 3: Sept. 18 & Sept. 20
Branches, Logic, and Conditionals

Assignments:
zyBooks Week 3, Readings: DUE Sept. 20, 11:59pm
zyBooks Week 3 Lab: DUE Sept. 22, 11:59pm


Week 4: Sept. 27
Loops!

NO CLASS on Monday Sept. 25, Yom Kippur holiday

Assignments:
zyBooks Week 4, Readings: DUE Sept. 27, 11:59pm
zyBooks Week 4 Lab: DUE Sept. 29, 11:59pm


Week 5: Oct. 2 & Oct. 4
Loops! cont.

Assignments:
zyBooks Week 5, Readings: DUE Oct. 4, 11:59pm
zyBooks Week 5 Lab: DUE Oct. 6, 11:59pm


Week 6: Oct. 10 & Oct. 11
Arrays + Vectors

NO CLASS on Oct. 9, Indigenous Peoples' Day
Monday classes moved to Tuesday, Oct. 10

Assignments:
zyBooks Week 6, Readings: DUE Oct. 11 11:59pm
zyBooks Week 6 Lab: DUE Oct. 13, 11:59pm


Week 7: Oct. 16 & Oct. 18
Arrays + Vectors, cont.

Assignments:
zyBooks Week 7, Readings: DUE Oct. 18, 11:59pm
zyBooks Week 7 Lab: DUE Oct. 20, 11:59pm


Week 8: Oct. 23 & Oct. 25
MID-TERM & Review

Assignment:
Take-Home Mid-Term Exam: DUE Oct. 27, 9AM (before lab)


Week 9: Oct. 30 & Nov. 1
Functions

Assignments:
zyBooks Week 9, Readings: DUE Nov. 1, 11:59pm
zyBooks Week 9 Lab: DUE Nov. 3, 11:59pm


Week 10: Nov. 6 & Nov. 8
Objects + Classes

Assignments:
zyBooks Week 10, Readings: DUE Nov. 8, 11:59pm
zyBooks Week 10, Lab: DUE Nov. 10, 11:59pm


Week 11: Nov. 13 & Nov. 15
Objects + Classes, cont.; Pointers

Assignments:
zyBooks Week 11, Readings: DUE Nov. 15, 11:59pm
zyBooks Week 11 Lab: DUE Nov. 17, 11:59pm


Week 12: Nov. 20
Pointers, cont.

NO CLASS on Nov. 22, holiday

Assignments:
zyBooks Week 12, Readings + Lab: DUE Nov. 21, 11:59pm
💥 you may turn this in on Wed. Nov. 22, 11:59pm instead


Week 13: Nov. 27 & Nov. 29
Algorithms

Assignments:
zyBooks Week 13, Readings: DUE Nov. 29, 11:59pm
zyBooks Week 13 Lab: DUE Dec. 1, 11:59pm


Week 14: Dec. 4 & Dec. 6
Final Project & Special Topics

Assignment: work on final project
FINAL DUE: Dec. 18th, 11:59pm


Week 15: Monday, Dec. 11 (last class day)
Wrap-Up, Final Project & Special Topics

Assignment: work on final project
FINAL DUE: Dec. 18th, 11:59pm


key dates

  • mid-term take-home exam: due October 27, 9AM (before lab)
  • final project: due Dec. 18th, 11:59pm

materials and references

We will use zyBooks (see above) as our online text. I recognize that there are many different ways of learning and that folks may want to practice with different tools, so I will also post other resources for every chapter: online tutorials, videos, and texts. There is a lot of good "learning to program" material available out there ... These additional resources will be optional but recommended - if you experiment, you may find that a different method makes a concept click for you!

tools we will use a lot

expectations and requirements

how can I do well in this class?

  • Stay curious about programming and problem solving - there is something that brought you to coding in the first place! Try and focus on finding the puzzle-solving muscles in your brain and learning a (fun!) new way to express them, rather than worry about quickly coming to the correct answers. We're going to learn to code, but we will also learn to think like a programmer.

  • Take your time, and make sure you give yourself time to do your reading/assignments ... we are going to cover a lot in this course, but the goal is not to rush through it. If the solution to a problem does not instantly reveal itself to you, this is OK, this is great, this is part of the process! Programming involves a lot of sitting with challenges, breaking down complexities, trying and failing and trying again, and devising sideways solutions that weren't obvious right away. Learning this rhythm is a big part of learning how to code.

  • Also, it is crucial that we build a space where everyone can stay curious and take their time. This class will be an inclusive and harassment-free space for everyone, with no tolerations of discimination based on gender, race, sexual orientation, religion, disability, or appearance. Please let me know privately if you require an academic accommodation.

evaluation:

Grading breakdown:

  • Participation/Attendance: 15%
  • zyBooks Reading: 20%
  • zyBooks Labs: 25%
  • Mid-Term Exam: 20%
  • Final Project: 20%

on late work:

The Wednesday/Friday due dates schedule is set up for us to learn together and keep pace as a class, and I highly encourage that you try and stick to it; students in the past have said that this kind of structure has helped them become better programmers and stay on top of the work. That said, I understand that things happen. For readings and labs, you have a 2-day "grace period", which you may use 3 times during the semester. If you turn your work in within 48 hours of the deadline for one of these "grace periods," you will not lose any points due to lateness.

If you use up your 3 grace periods, any late assignments drop 10% per day, starting after the due time. (If you submit a zyBook reading 1 hour after the due date, for example, it already drops 10%. If you wait another 24 hours, it drops 20%.)

If you have a reason for needing an extension (where you will receive full points), please reach out to me before the due date for an assignment.

🟠 ➡️ To receive credit for any late work (including using a grace period), you will need to fill out this form once you have completed it.

💥 You may only use the grace period or late work policy for reading homework and labs. You may not use this for the mid-term or final project.

academic honesty and integrity:

Plagiarism is "the act of presenting another person's ideas, research or writings as your own." (CUNY). This is as true for writing code as it is for writing others' words and pretending that they are yours.

It is important that everything you turn in for this class is your own work. I understand that collaborating with your classmates can be really helpful when learning programming - you are allowed and encouraged to do this! However, the code you submit must reflect work you have done on your own. To outline some of the boundaries here, it is acceptable to:

  • Discuss the course’s material with others in order to understand it better.
  • Help a classmate identify a bug in their code
  • Incorporate a few lines of code that you find online or elsewhere into your own code, provided that those lines are not solutions to assigned work and that you cite the lines’ origins
  • Turning to the web or elsewhere for instruction beyond the course’s own, for references, and for solutions to technical difficulties, but not for outright solutions to assigned work.
  • Whiteboarding solutions with others using diagrams or pseudocode but not actual code.
  • Working with a tutor to help you with the course, provided the tutor does not do your work for you.

It is not acceptable to:

  • Give or show to a classmate a full solution to an assessment
  • Search for or solicit outright solutions to assessments online or elsewhere.
  • Split an assessment’s workload with another individual and combine your work.
  • Submit (after possibly modifying) the work of another individual
  • Use AI-based software that suggests or completes answers to questions or lines of code, unless given explicit permission (for researching final project, for example).

These terms modified and inspired by Harvard's CS50's academic honesty policy, here.

I have ways of checking on the originality of your code and assignments. Consequences for violating this academic honesty policy will be severe, including but not limited to failing the course.

You can find CCNY’s Academic Integrity Policy in full here. Do not plagiarize.

contact and questions

👾 Our class will have a Discord server for posting questions and communicating with each other. If you have a question about the programming material, I suggest you start by:

  • taking a pause - have you put in some time trying to solve this problem on your own?
  • taking a walk - maybe you can approach the problem in a new way?
  • checking the Discord, did someone else already post a similar question?
  • if your question is new, make a post! try to include as much of your thought process as you can

If you are answering a question on Discord - try and be friendly, and respond in the way you would like a response yourself. Remember that you will be asking a question yourself @ some point in your programming journey! We all have something to learn and something to offer.

Have a question about zyBooks, something not working the way it's supposed to? The zyBooks FAQ platform here is pretty great. If you can't find the answer to your question there, there is a team of people ready to answer your zyBooks questions (faster and better than I would!) at support@zybooks.com.

If you would like to ask a question privately, please e-mail me - I am available and I try to respond within 24 hours. You are also invited to schedule some virtual office hour time to talk, here. If you need a time that's not on this schedule, please e-mail me.

About

class repo for CS 10300 (C++), CCNY Fall '23

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages