Advice from Students on Learning to Compute

I had almost no CS experience coming in, I had taken one coding class in my freshman year. I found the computer science department at Michigan super welcoming.” —a student who took EECS 545 and 586, then attended the CS theory seminar and others.

“Besides coding there are other computer software people might want to get familiar with such as git, using the terminal, bash commands etc.”

“All of my graduate work began in computations and numerical experiment. There’s no greater sanity check than running your results against empirical fact. I use Sage (now known as Cocalc) for problems in number theory, dynamics, representation theory, and geometry. The software is free and open source. You can see exactly how everything is implemented. New functionality is added constantly. Sage is built on top of Python, so if you already know Python you are ready to go, and if not (which was me coming into grad school) then you’ll quickly pick up two skills at once.” Trevor Hyde.

“As math grad students, we can obtain free licenses from the university for MathLab and Mathematica to use in our research and/or courses.” –Jenia Rousseva

“Teaching a Computer Science (EECS 376) course is a unique opportunity, the benefits of which I did not even fully realize when I applied.

When I learnt that the EECS department was hiring GSI from Math, I was not confident at all that I would get the job. The course that I was applying for was Theory of Computation, and coming from an Analysis/PDE background, my knowledge in Computer Science was limited to an intro programming class that I took years ago. Nevertheless, the desire to try something new urged me to start learning the class from scratch on my own. The professor who interviewed me was mostly interested in that I am good at explaining abstract and complicated concepts to students using analogy and examples, and that my teaching record shows great comments from previous students; I was only asked a handful of questions regarding the actual contents of the course, which I fortunately learned by going through the textbook.

As the semester progressed, I started to appreciate this opportunity even more. I had always wanted to learn data structure and algorithms on my own, and what serves as better incentive to learn than the fact that you have to teach them tomorrow? My understanding of algorithms was enhanced enormously through explaining concepts and examples to students (over and over again), which I would perhaps never achieve by taking a course alone. Moreover, as I had received two years of teaching training in the math intro program, students loved my teaching style, and many wrote very nice comments in the teaching evaluation.

In addition, the GSI position is a valuable practice on project/time management skills. The teaching team consists of professors, GSIs and IAs (roughly, undergraduates who serve as half a GSI). As the professors mainly focus on teaching, GSIs are also responsible for interviewing and hiring graders (that’s right, GSIs don’t have to grade homework!), reviewing the proposed homework problems and notes written by IAs, and coordinating homework/exam release/grading/regrade issues. I would say that the nature of work resembles more of a co-coordinator in the math intro program than a regular GSI, though the overall workload is similar/slightly less than a regular GSI.”— Yuxin Wang

About EECS 402:  “This is a great class for learning to code. It (at least used to be) taught at night by someone who’s actual day job was coding. It’s aimed at non-computer science majors and doesn’t assume you know any coding at the beginning. By the end of the course you can code mediumly complicated programs and you have to do a group final project.”

About SI 506:  “This is a very basic course for people who have never programmed before. In the first half of the course you learn how to do lots of basic things in Python. In the second half of the course you learn to use Python to access and work with data sets from various internet sites such as Twitter, New York Times, etc. The course doesn’t include any computer science theory, but gives a simple introduction to programming with an emphasis on data science applications. I guess if you are interested in science/engineering applications, then EECS 402 might be a better choice, but if you are interested in data science then SI 506 is a nice easy introduction.” —Lizbee Collins-Wildman

About EECS 586:   “This course is not too difficult but it gives a really good foundation of the important types of algorithms you should know. After this class you at least know a lot of the buzzwords so you won’t get as lost in seminars. It does have quite a bit of homework though because it is designed for masters students.”

“EECS 586  was frustrating for me because it was a lot of simple math. I wish I had known that EECS 477 is a more mathematically sophisticated algorithms course.”

About EECS 545:  “This introduction to machine learning is a great class. Students with a good linear algebra background (so most math grads) can go straight into it rather than taking 445. When I took it there was quite a bit of coding in matlab and it was good practice. It varies a bit with the teacher, I took it from Clayton Scott who was great and works on theoretical research so he had that bent.”

EECS 551 “is often taught by Raj Rao. He definitely has a significant amount of coding. I took his class and it was about an hour of lecture followed by 2 hours of coding.”

About the Theory Seminar in CS: “The talks are usually pretty understandable and the audience is friendly and small enough that it’s a good way to get to know the theory faculty.”

General Advice on Learning to Compute