Posted: Thu, 01/18/2018 - 10:00
Over the years, I have been pleased to see that many of my students have gone on to study at the great colleges that exist around Boston and beyond. Northeastern, University of Massachusetts - Boston (where I earned my M.Ed. --- GO BEACONS!), Boston College, Wentworth Institute of Technology, and others offer vibrant programs in computer science and information technology. Aside from the impromptu meetings at local supermarkets, several of my former students continue to connect with me via email and social media. I recently got this message from Shirish, who was in my CSP class:
Hello Mr Plotnick,
How you doing, sir? Sorry to bother you but I just wanted to ask you a bit of help regarding some Python problem from my college. I wrote the program and I just wanted a bit of help on the last line....Can you please help me if you can?
# trig_functions.py: takes a float t (angle in degrees) as command-line
# argument and writes the value of sin(2t)+sin(3t).
(The program continued from this point….)
Initially, I was flattered that a former student wanted my help. After trying his code and sending along some edits, I realized that his experience in college as a computer science student could be very helpful to my current crop of students. What better way to prepare them for what lies ahead than to share some of the observations from my former students?
Here is what the rest of my email exchange to the student included:
Shirish: Thank you, Mr. Plotnick, for your help. I just figured it out.
Me: Awesome. We actually did something like this in my class.
Shirish: Yup, just saw that code I had sent you as classwork.
Me: Darn, I'm good :-)
What a great way to confirm that my assignments were a solid introduction to what my students would be doing in college. Based on this exchange, I sent the following email to as many of my former students as I had in my address book:
I would really love to hear from you wonderful students that have completed some time in college. In particular, I would like to hear from those that have taken any computer science classes. I would be curious to see what you have been learning and what has surprised you the most in those classes. It would also be nice to learn what (if anything) we did in my class that was useful. I hope to use this feedback both for my future teaching and as part of the blogs I write for the CS for All Teachers community.
Thanks in advance!!
Among the replies I received, one of the most detailed came from Kyle. He is a student at University of Massachusetts - Lowell. I have edited his message somewhat for length, but his observations about CS in college are really great.
My first year of school was a blast. The computer science program at Lowell is incredible. Dr. David Adams makes complex lectures fun; my personal highlight was a 50 minute lecture on soup - that was really an explanation of opaque object programming in disguise.
I confirmed my suspicions that despite my love of breadboards and robotics, studying precise measurements and electricity just wasn't for me. I plan on pursuing a degree in computer science with a concentration in data science. Comes with a math minor too.
The first CS course I took, Computing I, focused on building out the basics of programming in CS. It also taught about data storage, two's complement, and memory (the stack, etc.) This course finished off with Linked Lists.
Computing II (honors section) focused more on data structures and sorting algorithms. We learned about trees, heaps, opaque objects, and the like. This course's lab was ongoing and culminated into a final project called "Evil Hangman." It was essentially a game of Hangman that cheated. When the user guessed a letter, an associative array in the form of a binary search tree sorted a dictionary of words, each node representing a different position for that letter in the word. The computer would dynamically select the largest pool of possible words; in most cases, this would be the pool with words that don't contain the guessed letter at all.
People join computer science because programming is fun. Learning to program is fun. It's why Codecademy and the like are so popular. But things get difficult and complex very soon. This is where people truly learn if it's the path for them or not.
What I learned in your class and on my own during high school was invaluable to me in my first year of CS. I struggled at times, even in the beginning, and I can only imagine how much harder the struggle was for those with no computer science background in the first place. Things move fast and debugging takes time. Knowing binary, having a basic understanding of how memory worked, and being comfortable with functions and data types made the transition to college level courses much smoother.
What I would suggest to you - and other high school CS teachers - is maybe to introduce some of those more complex background ideas to the students who are thinking of further pursuing CS. I can send you the memory templates we used when I get home. Make sure they understand binary. Bit shifting. Bitwise logic. These things should get them excited.
The most important thing for students learning programming though is to understand every line of what they're writing. When you write code, your aim is to write with function in mind, not form. When you begin writing C scripts, you'll try to memorize "int main(int argc, char* argv)" but really you should be thinking about what all of that means. Don't let it become muscle memory.
Anyway, that's all I've got to say. I'm currently working an internship with Harvard IT's SIS team. Working on a project in Perl. Harvard Medical's old database has a unique identifier for each external organization. So, thousands of colleges around the world. As they migrate to the new database that also has unique identifiers for each school, those codes need to be matched up. So I wrote a string matching algorithm to help get all the numbers where they need to be. Really cool stuff.
I really could not be more pleased with Kyle’s experience and explanation of his first year at college. As he wrote, “Knowing binary, having a basic understanding of how memory worked, and being comfortable with functions and data types made the transition to college level courses much smoother.” I will share his observations with my current and future students. Hopefully, I can augment his message with my other former students to present a clear picture for what to expect and to guide my own classroom instruction.
What type of feedback do you solicit from your students to inform your instruction?
Neil Plotnick (firstname.lastname@example.org) works at Everett High School, an urban district located just north of Boston. In 2015, he was a recipient of the Presidential Award for Excellence for Math and Science Teaching (PAEMST). He has taught Exploring Computer Science and was a pilot site for the AP Computer Science Principles course developed by Code.org during the 2015-16 academic year.