Teaching a 1-credit CS course at Cornell Tech

In 2021, I joined Cornell Tech as a Visiting Instructor, to trial out a class called CS 5356 Building Startup Systems. It started off as a 1-credit course that met for 1:15 hours a week. The goal of the class was to cover all the practical aspects of building software and software engineering. It is where you take the theoretical skills of writing code and connect it to real world problems solved through the web.

Cornell Tech also has an entrepreneurial program called Startup Studio that puts students in multi-disciplinary teams to build the basis of a startup, and in my class, they can develop a working prototype of their idea using tools like React & Firebase.

This was my first time teaching in a university setting. Years ago, I ran a non-profit to help teach underserved teenagers in NYC how to code with robotics, and now, the big difference is that I'm teaching adults. Surprisingly, the age doesn't make that big of a difference!

I enjoyed the experience of teaching, of watching students connect one idea in their head to another in real time. Students have big aspirations and the energy to do it. But the experience also had its downsides, so I thought it'd be helpful to share out my experience for other technical instructors & aspiring students (both in and out of university settings).

On Teaching

When I joined in 2021, we were still in the middle of the pandemic so my very first experience was teaching a class remotely over Zoom to ~45 students who had registered for the class.

Since it was a 1-credit course, my class started midway through the semester and lasted for 8 weeks. My class ran for an hour and 15 minutes each Monday at 3pm.

At my day job at Amplify Education, I'm used to working remotely and presenting in front of a room of blank squares with your initials as an avatar. So I didn't mind it too much and I had fun with it - like this pic where I use the backdrop of the conference room in The Office 🙂.

a screencap of a zoom recording of one of my classes

My biggest worry while preparing for the class was that I wouldn't have enough content to fill the time slot. It was my biggest dread. So I prepared a ton of content to go through in each session. Then reality would smack me in the face when I realize how hard it is to cover whatever I thought I would be able to cover.

On Teaching Programming

Since I'm teaching a grad level class, I assume that students can understand code and at least be able to put ideas together with code. And that's true to an extent. One of the nice things about Cornell Tech is that you can enroll even if you don't have a CS background, as long as you're able to figure it out on your own and catch up.

Unfortunately, for me, that means the experience range in the class goes from people who have never heard of git all the way to people who have already launched a web-based business. I have some students who have only taken Data Structures & Algorithms, others who only know Python with Jupyter Notebooks. One student shared that their intro to CS class was C++ and it was mostly focused on coding for biostats.

Multiple students would say, "I only know python for machine learning", worried about how they might perform in my class.

a survey that shows 9 percent of students in my class are very new to programming

From a student's point of view, their only exposure to the industry is via their college experience, after all, that's what they are paying for. But some colleges are stuck with outdated ways and techniques of building software, and it doesn't line up with whats needed in the industry. The gap between writing some numpy scripts in Jupyter code and creating a product that people can use is huge.

It is impossible to cater to both ends - I tried and failed miserably.

My first 3 months of my first programming job was a mind opener in topics that never came up in school. Things like version control, continuous integration, environments was all a new concept to me and never mentioned in my college - so this was what I wanted cover in my course.

I also learned that many teachers who teach programming or other CS classes are not always teachers first. They do other work as part of their job at the university and the class is just one part of it, and for some - its their least favorite and required thing to do (and I get why!). They may not even have a background in teaching at all. One of my professors hadn't programmed professionally in years. His experience seemed outdated even in an intro class.

But I can't really talk either... I have no formal background in teaching either!

On Learning Programming

Its one thing to learn the syntax of a language, and its something else to use the language to do something more than console.log(). Lots of people struggle with both.

Lectures are a terrible format for learning. And the alternative where students do exercises during class falls apart quickly. Some students like to work in groups, some students want to work individually. There's a lot of slackers out there and people try to avoid them.

Some students work better when they can review material ahead of time. Some students just want to hear what you have to say that day. Some students rely on the Zoom recording, so they can be less alert during the actual class. Some students like a video format. Other students prefer a text-based format.

And holy moly, its a lot of work to put this all together from scratch. The crux of the problem is, I don't know how much I can reasonably cover within a semester's time, and I can make small course corrections based on feedback - but I can't make big shifts in the order I teach things mid-way through the semester (not easily anyway).

Students pay a pretty penny to get an education from a university, but given the structure and the incentives, universities (in general) don't have strong incentives to provide quality instruction. Cornell Tech pays a pretty penny to get professional industry leaders to teach their courses, and I think they have a good cross-section of practical experience + teaching experience. But students have very varied experiences across schools.

So students come in expecting to learn from people who are at the top of their game. And its possible they may get someone who is good at what they do, but can't communicate at all. Or you get someone who can teach, but they don't do the work professionally and might be behind the times.

On Grading

This was the hardest part to come to terms with. Early on, I told myself repeatedly - "I'm not out here to ruin anyones life." But at the same time, I had to define a bar for what constitutes acceptable work.

Grading is incredibly subjective. There is no standard for grades - especially for a class that you're creating. And the ranges will vary wildly from class to class. For one professor, an A+ means you have to go above and beyond whats expected of you in the class. For others, an A+ means you completed all the work that was expected of you. It is up to the teachers discretion to grade the students understanding of the material - this is hard to do.

The best advice I got was to base it on a real situation. If a student was to mention during a job interview that they took this class at Cornell Tech, and showed up, and didn't know any of the lingo, the interviewers would doubt the usefulness of their degree. So for me, an A/A+ meant that I believed you had enough to hold your own during a technical interview.

That said, some students are (obviously) very opinionated about how they should be graded. Some students think they should be graded on effort, others believe the amount of time spent should be a factor. Others want to do the work when they feel like it without penalty.

There was one F in my class this first semester but it was a student that had meant to drop the course. Because it was a 1-credit course, I tried to make it very easy with a minimal amount of work. I started the course with ~45 students and finished with 33 by the end of the semester.

Here's how they did
grade distribution of the class

Maybe in a future post - I'll talk about the way I structured the course and why from an instructor's perspective.

You might be interested in…

Menu