Welcome to my notebook

When I first arrived at college, I didn't know how to program. I'd never written a single line of code. During my first semester, I enrolled in a course called "Introduction to Programming" I arrived at the lecture hall the first day of class, made my way to the only remaining seat in the entire auditorium. I introduced myself to the students sitting next to me, and asked them if they were beginners too. Their response surprised me. As it turned out, I was the only one of us who had never written a program before. I was in disbelief.

This class is called 'Introduction to Programming'. Why are you guys even taking this class? I inquired. It sounds to me like you've already received an 'Introduction to Programming' somewhere else beforehand...

Yeah it's definitely confusing... sympathized another student, Usually students are introduced to programming in a different class: "Fundamentals of Computation". If you're new at this, you should probably take it first.

Now, I know for cetain this wasn't mentioned in my orientation, but then again, there was no reason for it to have been: I didn't enter USC as a computer science student. If I had, I might have registered for the right class, but here I am instead, sitting in a class full of students who, from the sound of it, aren't exactly beginners. I opened my laptop and navigated to USC's course registration page. I hunted for the course I'd just been recommended to switch into. When I went to confirm the the change in registration, an error message popped up on my screen. The transfer didn't go through.

To my dismay, I found that every section of the course had already filled up. It was too late, there was no room left for another student. I'd just have to take this class instead. My shoulders sank into my chair, defeated. I was out of luck.

What am I getting myself into? I worried as I sat there, looking around the room, feeling a looming sense of dread. I closed my eyes, took a deep breath, and looked back up. The professor has just arrived. He made his way to the center of the room, and turned on the projector. The booming roar of the crowd fell to a hush murmur.

Our first assignment, we were instructed, was to write a program in C, a language that many consider a bit hostile as an introductory language, especially for a beginner who had never programmed. But, for better or worse, at the time I had nothing to compare to. That evening, I made my way across campus, entered the library, opened up my laptop, and and set off to tackle this assignment. I read through the the instructions: First, we needed a terminal so I went to open mine up. When it opened, however, I froze: I'd never used a command line interface before. As I sat there, staring at the cursor, it blinked back at me, almost mockingly. Panic began setting in. I was in way over my head.

The student sitting next to me tapped my shoulder, and introduced himself. He was a senior, who came to the library to work on his capstone assignment, which, as luck would turn out, was for his degree in computer science! He smiled, glanced at my laptop, the empty terminal, the blinking cursor, and looked back to me. With one eyebrow raised, he ventured a guess:

You've never done this before, have you?

I had absolutely no idea what I was doing, this much must have been clear to him. It's probably why he introduced himself in the first place.

Yeah, not a clue... first time... I sighed, and looked down, sheepishly. Thanks for stepping in. I added.

No worries, I remember writing this program. Here, I'll coach you through it. he assured me.

My eyes lit up. I thought it was too good to be true, but sure enough, he sat there with me, and guided me through each step of the assignment. When we reached the finish line. I entered one last arcane incantation into the terminal before me, held my breath, and pressed return.

Two words appeared atop my cursor: hello world

Replaying the process in my head, I struggled to recall everything we'd done. I wasn't sure I'd be able to replicate this procedure. Sure, there was programming, but we also had to compile the program, and execute it as well. It felt so daunting. I turned to him, and sighed.

Do they really expect me to remember all of this? It's so many steps...

He laughed, he definitely had an answer he was ready to give, but he stopped himself. He paused, he looked back down at the laptop, and thought about it for a moment.

I guess you don't really have to remember how to do it. he said, shrugging his shoulders. You just have to remember where you wrote it down.

That advice really stuck with me. With each passing semester, I held onto it as I climbed one rung higher on the ladder of computer science.

A couple years passed by, and I land a job in the computer science department, assisting the professor teaching a course on software development. If you'd told the college freshman sitting in the lecture hall that in just two years time, he'd never believe you. And yet, there I was: directing labs, helping write exams, and holding office hours for students. I never really thought I'd make it that far, especially in so little time.

I never had a chance to thank that senior-year student for the wisdom he gave me in the library that day. Even now, I still pass the advise on to my own students: You just have to remember where you wrote it down.

This is where I wrote it down, and everything I've ever learned since. Welcome to my notebook.

C / C++
URIs and URLs
Microsoft Azure
Rasberry Pi
Regular Expressions
Jupyter Notebook
Wolfram Language