Member-only story

How to Do Well in Your STEM Classes

Learning can feel difficult, but it doesn’t have to be.

Joseph Mellor
22 min readJan 26, 2023
Photo by Dan Cristian Pădureț on Unsplash

We’re a few months into the semester and a lot of students are a little stressed. Midterms are coming up or have already come up and I’ve been getting a lot more students asking me to tutor them. While I can only tutor so many students at a time, I can publish an article that can reach a lot more people. In this article, we’re going to talk about my general approaches to doing well in STEM classes. If you have any recommendations, please leave a response.

A Sense of Scale

Before I get into the article, I want to make it clear that you don’t need to do everything in this article, especially if you just want to get by in a class instead of becoming an expert in the field. You should only do everything I recommend if you’re trying to get a perfect score on all your tests and homework. Everyone else should take the pieces of advice they find most helpful.

With that being said, none of these ideas are mutually exclusive, so you could do all of them at the same time once you get the hang of them.

Classes Build Upon Each Other

There is a small part of me that dies whenever an engineering student wipes Euler’s Theorem from their memory. I don’t expect everyone to memorize everything that they learn in class. I don’t mind if you need a refresher on a topic you learned last semester. I don’t mind if you forget Partial Differential Equations as you’re leaving college to work in an unrelated field. And I certainly don’t care when someone doesn’t memorize every single trig identity. I only suffer when someone forgets something they’re going to use next year, such as when a sophomore engineering student forgets Euler’s Theorem. I know they’re going to feel blindsided when they get to complex roots in Differential Equations, and I can feel their pain.

How Much Information to Retain?

I would recommend that you retain enough information to relearn the topic without too much trouble. At a minimum, you should know

  • when the topic is relevant,
  • a few problems relevant to the topic,
  • any notable mistakes you could make,
  • a few relevant facts,
  • key terms to help you research the topic,
  • and some resources you found useful.

You don’t even need to memorize all that as long as you write it all down somewhere. In other words, if a student taking the class were to ask you for general advice on the topic, you should be able to give them enough information for them to figure it out for themselves.

Keep Old Notes, Tests, Homework, Projects, etc.

You don’t need to be a hoarder and you don’t need to keep stuff from a decade ago, but having worked examples that you can go back to can give you a great refresher. To save on space, you can either scan and upload your documents to your computer or you can type them up in something like LaTeX.

Return to the Subject After Some Time

If possible, you should go back to previous subjects and try to redo some of the stuff you did in class. You obviously don’t need to retake the entire class, but trying a problem or two wouldn’t kill you.

Know Where You’re Going

In an ideal world, everyone would retain everything they learn indefinitely, but we live in a world with friction, air resistance, and brains made up of goopy wires. Since you’re only going to remember so much, it would be in your best interest to figure out what to focus on. On a grand scale, you should look ahead in all the classes you plan to take and try to relate the topics in that later class back to your current class. On a more minor scale, you should understand at least some of the major goals of the class.

How to Look Ahead

To figure out the actual material, I would first suggest asking people who have taken the class and are currently taking the class what topics from your current classes show up in later classes. Then, I would suggest trying to teach yourself some of the stuff from future classes. You’re probably not going to understand everything, but you’ll get a feel for what you’ll need to know now. As an added bonus, you’ll have the vibe for future classes down and you can spend your time during those future classes filling in gaps in your knowledge.

Work on Projects

Working on a relevant project is one of the best ways to understand a topic. It forces you to assemble all the disparate ideas of the class into a single object. Within this object, you can see your handiwork, and you can recognize everything within it. For example, I don’t think I could have said that I understood Abstract Algebra until I started trying to solve the central problem in my How to Discover Finite Fields While Bored in Class series. This project forced me to fill in a lot of holes in my understanding.

What Counts as a Project?

A project is any significant body of work that has some specific goal. A programming project would be making a program/library that does something.

A math project would be trying to write a proof to solve some problem, whether that be a known problem like figuring out when you can switch limits in Calculus or an unknown problem like my Finite Fields series. You could also do a Matt Parker-style challenge.

A science project could be a math project, a programming project, or setting up an experiment to prove something. One of my earliest projects was to figure out the exact gravitational acceleration an assassin from Assassin’s Creed would experience without neglecting air resistance based on this video. In doing so, I learned a lot about Differential Equations years before I took the class. As a list of much cooler examples, AlphaPhoenix does a lot of science projects on his channel.

Lastly, an engineering project would likely involve building something like a circuit, a turbine, a bridge, etc.

In many cases, there’s a lot of overlap between these projects, but that’s a great thing.

Example: The Maze

I once came up with a concept for a part of a horror game where four players are separated and have to find each other to escape from a maze with a monster within it. If I make the maze too small, then they’ll find each other immediately and the maze won’t be spooky. If I make the maze too large, then they’ll eventually get bored or frustrated. To get an estimate of how long they’d be in the maze, I looked up various concepts in Probability to help me out and I found out about Markov chains. I then used a Markov chain to model the movement through the maze and then calculated relevant information. In practice, it was a giant Excel spreadsheet because I hadn’t learned to program yet, but I got it working.

Example: Battleship

On my flight back from Ireland to the U.S., I decided to play some games on the display on the back of the chair in front of me. I beat the chess AI on every difficulty with Scholar’s Mate, so I decided to move on to something else. Eventually, I settled on Battleship. I found a pretty good strategy that let me beat the AI frequently, and I wanted to see how it holds up with other strategies. The plane had an outlet, so I got on my computer and wanted to make my own Battleship game. I didn’t do anything fancy and I had to finish it over the next few days (In my defense, I didn’t have internet for any flights and I was doing other stuff.), but I got something working.

Don’t Copy Other People’s Projects

You should always try to put your own spin on any project you do. With that being said, you can definitely copy parts of other people’s projects or make your own version based on someone’s initial idea.

These Projects Sound Intense

Some of the projects listed above might be unrealistic for you to do, but there are plenty of other projects you could do. Say you like messing with audio. If you’re a programmer, you can write code to apply a filter to some audio. If you’re an electrical engineer, you can try to build a circuit that filters an input signal. If you’re a computational physicist, maybe you could try to simulate what an instrument should sound like. All you have to do to figure out a project is pick something you’re interested in and try to apply your skillset.

What if I Fail?

As long as you learned something, the project is worth it. For example, I tried making a physics engine in high school. While it compiled, I have no idea if it worked because I didn’t even know how to test it. Even though I failed, I still learned so much about C++ that I was able to breeze through my first few CS classes. Even though there were still some huge gaps in my knowledge going into those classes, I could spend my time filling in those gaps instead of trying to learn about the topics the first time.

The Best Teacher is Two Teachers

While two classes may share the same name, the topics covered and the approaches to those topics depend on the professor. I took a Real Analysis class that had a focus on Functional Analysis (e.g. inner product spaces, norms, etc.) while some students I tutored took a Real Analysis class that had a focus on Topology (e.g. open sets, compactness, etc.). I had to fill in some gaps in my knowledge so I could tutor these students, but I was able to fill in those gaps by using the ideas common to both classes to connect everything.

Every Teacher is Different

Every teacher has their own focus, biases, techniques, and approaches to topics. For any given idea, you should find the teacher that makes the most sense to you and use that as your basis to understand what other teachers have said about the topic. For example, check out these three videos on General Relativity.

The title is dumb clickbait, but the video itself is good. Gravity may depend on your reference frame like all inertial forces, but it’s still a force.

Although they’re mostly pop science, they still contain a lot of important ideas and the understanding you’ll gain is greater than the sum of its parts.

Make Meaningful Connections Between What You Know

Your memory is less like a collection of individual facts sitting within a void and more like a web of deeply interrelated ideas. The more connections you make between ideas, the easier it will be to understand them. The motivations behind ideas will become more apparent, the background knowledge will become more helpful, and you can use what you’ve just learned to strengthen what you’ve already learned.

Work on Multidisciplinary Projects

As I said when talking about projects above, the overlap between projects is a great thing because it forms direct, meaningful connections between various ideas. Calculating an integral may be abstract and hard to grasp, but numerically approximating something with a computer isn’t.

Memorize Derivations When Possible

There are many formulas that are much simpler to memorize than their derivations (e.g. Kepler’s Third Law) and you should memorize those, but you can often reduce what you have to memorize by letting knowledge you already have do the work for you. For me, this knowledge consists mostly of Algebra. If I know the initial direction, I can figure everything else out.

Example: Bernoulli Equations

For example, in a standard Differential Equations class, you’ll probably be introduced to a set of equations known as Bernoulli Equations. A Bernoulli Equation is a specific type of differential equation that has a specific formula for the solution. I have never memorized this formula. Instead, I just remember to make the substitution v = y¹⁻ⁿ (I haven’t seen a Bernoulli Equation in so long that I forgot the power to which you raise y, but you could make the substitution v = yᵏ and find the value of k that makes the equation nice). This substitution converts it into a first-order differential equation I know how to solve.

Example: Trig Identities

I remember three identities from trig:

  • sin² θ + cos² θ = 1
  • sin(α + β) = sin(α) cos(β) + sin(β) cos(α)
  • cos(α + β) = cos(α) cos(β) – sin(α) sin(β)

To derive the other squared identities, I divide the first identity by sin² θ or cos² θ. To derive all the double angle, half angle, and power reduction identities, I start by letting α = β = θ, plug it into the cos identity, then use the first identity to get rid of the sine or cosine identities.

Use Examples as Your Guide

Abstraction is a way to take what you know and generalize it. To start off with an abstract approach to a topic only makes sense if you already knew enough about the topic to find your footing. For this reason, I’ll glance through the abstract stuff to get an idea of where I’m going, but I won’t return to the abstract stuff until I’ve already seen several non-trivial worked examples. I recommend you do the same.

Where to Find the Examples?

First, you’ll want to look at the section of the textbook before the problems. These sections often have complete, worked examples for solving several classes of problems, especially before you get to the upper levels of undergrad. In the cases where you don’t have worked examples in the textbook, you’ll want to try looking through any notes you or the professor have for the class, looking through other textbooks, or searching for relevant problems on the internet. Obviously, you shouldn’t cheat on any of your assignments, but you should look for similar problems and try to transfer the concepts of the example to your problem.

Make Your Own Examples

You’ll want to make your own examples. Many of these examples will come from problems you’ve answered on homework, tests, quizzes, and any problems you’ve worked through with someone who knows the subject. These examples are the most important because you have made them your own.

Figuring Out the Rules of the Game

Let’s go back to the story of me tutoring people in Real Analysis. The class I took focused on one field of math while the class my students took focused on a different field. Although I was still able to figure out most of the material on my own (it’s a lot easier when you already understand 80% of the textbook because you had already taken several relevant classes), there were a few problems that stumped me. Most notably, I could not for the life of me name a function that was continuous/differentiable at exactly one point. I could name functions that were continuous nowhere and differentiable nowhere, but not at exactly one point. Since I was tutoring and not taking the class, I decided that it would be better for the student I was tutoring if I just looked up the answer.

In doing so, I found one of the rules of the game: take the Dirichlet indicator function, which is defined to be 1 if x is rational and 0 if x is irrational, and multiply it by some other function that forces a given property. For example, to ensure continuity at a specific value c, multiply the Dirichlet indicator function by (xc). To ensure differentiability at a specific value c, multiply it by (xc)². I won’t explain the specifics of why these functions satisfy these properties because it’s not the point of this section. Instead, I want to point out that I could not solve an entire class of problems because I didn’t know about this technique.

How Do I Pick Up These Rules?

As always, you need to find examples. Once you have these examples, you’ll want to extend and combine your examples to cover more and more ideas until you get enough examples to make a rule.

Solving Problems

At this point, you should have some facts and you should know the rules of the game, but that’s not enough to do well in any class. A piece of paper can list some facts and rules, but only people can build airplanes and write symphonies. If you can be replaced with a piece of paper, you’re not going to pass the class or get the job. In a STEM class, you need to be able to solve problems, build models, and so on. To get good at solving problems, you need to get good at solving simple problems, recognizing what tools you need to solve problems, and breaking complex problems into simpler problems.

Simple Problems

When I say “simple”, I don’t mean that you’ll always be able to understand intuitively. In my terminology, simple problems consist of problems that you can solve with a few easy-to-do steps. In other words, they’re something you can program a computer to do with a few lines of code. Here’s a list of what I consider simple problems:

  • Solve the system of equations given below.
  • Calculate the integral of x³ from x = 0 to x = 4.
  • Find the electric field both inside and outside a sphere with a uniform charge density.
  • Write some code to randomly shuffle the elements of an arbitrary list.
  • Use two iterations of Newton’s Method to approximate the solution to x³ – 4 x² + x + 1 = 0 with an initial guess of x₀ = 1.
  • Find the equations of motion for an Atwood Machine using Newtonian/Lagrangian/Hamiltonian Mechanics.
  • Find some way to map arbitrary data of a specific type to arbitrary data of a specific type.

In all of these cases, there is a very specific set of steps that you should do to solve these problems. If you can recognize which algorithm to use to solve these problems, then you can do so without having to think about it.

Recognizing the Tools for the Problem

That brings me to my second point: you need to practice recognizing what tools you need to solve a given problem. In your mind, you should have a bunch of if statements like

  • If I see the phrase “system of equations”, I can use techniques like substitution.
  • If I see the phrase “linear system of equations”, I can use row operations from Linear Algebra to solve them.
  • If I have to calculate an integral, I can use techniques like the power rule, u-substitution, trig substitution, integration by parts, etc.
  • If I see ∫ f(xⁿ + c) xⁿ⁻¹ dx, then I will probably want to do a u-substitution with u = xⁿ + c.
  • If I have to find the electric field, I can do so using Gauss’s Law if nothing’s moving, Maxwell’s equations, etc.
  • If I have to map inputs to outputs and there’s no formula for the relationship, I probably want a hash table or a balanced binary tree.

These tools should help with both simple and complex problems. You get better at recognizing the tools for the problems by finding examples and by trying to solve problems with different tools. If a tool works on a problem, then you can try to use that tool on problems that seem similar. If the tool doesn’t work on a problem that seems similar, then you’ll know that the two problems are different.

Breaking Complex Problems into Simpler Parts

Say you want to make a program that prints out the 1000 most common words in some text and the frequency at which they show up. You can’t solve this problem with one singular standard algorithm, but you can break it up into smaller problems that do have standard algorithms.

  • Find some way to read text word by word, which you can do with standard file reading techniques.
  • Find some way to record how often each word shows up, which you can do using any key-value data structure. You’ll probably want a dictionary (a.k.a. an unordered map, associative array, or hash table) or a self-balancing binary search tree like an AVL tree where the key is the word and the value is the count.
  • Find some way to sort the words by how often they show up. Every programming language has a built-in sort function that you should probably use. If you can’t use that, code your own.
  • Find some way to convert the data structure in which you’ve stored the words and their count into something you can sort. Every standard data structure has something like a .items() function that does this.
  • Find some way to output the most common 100 words and their frequencies, which you can do with standard file-writing techniques or by printing to the console.

Of course, this is just one example, but every example looks just like this.

Complex Problem Chains

Often, you’ll have a complex problem that you can’t break into separate parts, but you can treat it like a chain of simple problems. For example, consider the integral

It’s quite a nasty mess. You can’t really split it up into simple problems, but you can use standard techniques to simplify it one step at a time.

Dealing With Mistakes

You may be surprised to hear this, but failure is a huge part of learning. The vast majority of mathematical and scientific discoveries were made because someone was wrong.

Get Your Failures Out of the Way

When a lot of students first see a problem, they’re stuck. You ask them what they want to try and they don’t know where to start. To those students, I want to say a few things.

  1. You’re probably going to fail.
  2. There’s nothing you can do to prevent the failure.
  3. You’ll be fine.

The way I think about it, the maximum number of ways you’re going to fail is out of your control. The only thing you can control is how many times you’re going to try. As long as you commit to not making the same mistake, you’ll run out of mistakes to make and your only option is to do the problem correctly. The more mistakes you leave on the table, the more likely you are to make one on the test. If you run out of mistakes before the test, you’re going to get a good grade.

Credit: xkcd #2248

Minor Mistakes Don’t Count

Despite having spent years working within a specific field, at least one of your professors will

  • make a sign error,
  • be off by one,
  • use the wrong units,
  • type something in their calculator incorrectly,
  • make a syntax error,
  • take a derivative incorrectly,
  • multiply by (n + 1) when integrating xⁿ,
  • or call something by the wrong name.

As a rule, the less time it takes to correct an error, the less it should worry you. Granted, you should do what you can to reduce the likelihood of making minor mistakes, but a few minor mistakes won’t kill you.

Learn from the Mistakes of Others

You won’t have the time to make every mistake you could make, but you can get the benefits of making all these mistakes without having to make them yourself. Find someone who has made these mistakes, and then try to learn from them.

Photo by CoWomen on Unsplash

Work With Other People

Some people will understand a topic with little to no effort. Others will not. The easiest way to fix the problem is to work with other people.

Learning from Others

If you don’t understand a topic, you should work with people who understand the topic. They can give you worked examples, explain ideas to you, give you a new perspective on the topic, etc. I don’t think I need to go into more detail, so I’m moving on.

Mentoring Others

It might seem like the relationship between mentors and learners is entirely for the learner’s benefit, but that isn’t true for a few reasons.

  • If you don’t fully understand the ideas, trying to explain your incomplete ideas can help you find the gaps in your understanding.
  • When you make something that helps others understand something, you can also use what you’ve made to help you understand it.
  • Helping others in one aspect of their lives can convince them to help you with aspects of your life.

With that being said, don’t let other people take advantage of you. Only give what you can give without losing yourself.

Healthy Competition and Cooperation

The mentor/learner relationship doesn’t have to be clean-cut. In one of my classes, we had to write some code to simulate a game. I started competing with one of my friends who was also in the class to write faster code. It was a friendly competition, so we exchanged ideas. At the end of the competition, we had written some fast and easy-to-read code. Without the competition, we wouldn’t have done nearly as well.

Don’t Cheat

Working together doesn’t mean cheating off each other. It means teaching each other what you know so that you can learn from each other.

Photo by JESHOOTS.COM on Unsplash

Task Scheduling

So you’ve gotten everything else set up, now you just need to do it. But when? But how? I’ve never had a strict schedule outside of classes and scheduled meetings with other people, but I still have a few rules.

Don’t Multitask

Your brain is single-threaded. It can only focus on one task at a time. Multitasking is great only when you want to do ten things so poorly that you have to redo them later. This fact is a consistent result across multiple studies in neuroscience, which puts it in the same tier as “humans need a brain to survive” and “the brain is associated with thinking”.

People who chronically multitask show an enormous range of deficits. They’re basically terrible at all sorts of cognitive tasks, including multitasking. So in our research, the people who say they’re the best at multitasking because they do it all the time. It’s a little like smoking, you know, saying I smoke all the time, so smoking can’t be bad for me…

People who multitask all the time can’t filter out irrelevancy. they can’t manage a working memory. They’re chronically distracted. They initiate much larger parts of their brain that are irrelevant to the task at hand. And even — they’re terrible at multitasking. When we ask them to multitask, they’re actually worse at it.
NPR Interview “The Myth of Multitasking”

In other words, try focusing on one topic at a time. You can have things like music running in the background, but only if you don’t need to actively focus on those things.

Always Be Doing Something

I have always been a procrastinator and, based on recent projects, I always will be.

Still from a recent video about symplectic integrators. Demon Slayer is also a great manga/anime.

With that being said, I’ve managed to find ways to do well in spite of procrastination. My most powerful trick is to always be doing something I’m supposed to be doing. For example, maybe I don’t want to write an article right now, but I’m down to edit a video. Later, I won’t want to edit a video at all, but I’m down to write an article. Some days, I don’t want to do either, so I’ll pop an educational playlist on and watch for a bit. Other times, I want to get caught up on a TV show or some video, and so I’ll do that. In any case, I’ll be getting something done. For more information, check out this article on structured procrastination.

Memorization Tricks

You’re going to have to memorize things, so it’s a good idea to figure out what works and what doesn’t work for you. Everyone’s got their own system, but here are some general pieces of advice that should help a lot of people.

Take Care of Your Health

Your brain is an organ within your body. If your body is unhealthy, your brain isn’t going to function as well and you can’t learn as well.

I’m not pretending that it’s always going to be easy to take care of your health or that you’ll fail all your classes if you eat a doughnut, but being healthy can help you do well in your classes.

Spaced Repetition

Spaced repetition is a standard way of learning a lot of material indefinitely. All spaced repetition algorithms follow the same basic pattern:

  1. Start by asking yourself all the questions you expect you’ll need to be able to answer. You should try to answer without seeing the answer.
  2. Mark every question you get wrong and every question you get right.
  3. Repeat steps 1 and 2 with all the questions you got wrong.
  4. Repeat step 3 with the questions you got wrong twice.
  5. Repeat the entire process until you get all the questions right at least a few times.

There are plenty of specific algorithms (e.g. the Leitner system) and software (e.g. Quizlet) that can help you with the process.

Writing the Same Thing Over and Over Again

For cases where you need to memorize something quickly and effectively such as formal definitions, you might find that rewriting the thing to memorize over and over again will help. Granted, I’ve only used it to memorize things like vocabulary words and things you’d put into a table, but it has absolutely worked in those cases.

Conclusion

That’s going to be it for this article. Again, I want to remind you that you don’t need to do everything within this article to do well. If you feel overwhelmed and don’t know where to start, start somewhere. If you don’t know where to start, just pick a few tips and work with them. If you have any tips, recommendations, or resources (especially for neurodivergent people), please leave a response. If I get enough responses with good tips, I might make a sequel for this article.

Further Reading

If you want to look ahead at math classes, check out my article Beyond Calculus: The Math Classes You Didn’t Take. It has a brief summary of some of the biggest fields in math along with lists of free online resources. If you want to learn how to write proofs, check out my article Approaches to Proving Statements in Mathematics. If you’re new to Physics, check out my article Approaches to Solving Problems in Physics. If you plan on doing a lot of Math or Physics, you might like my series The Road to Quantum Mechanics, in which I cover all the math and science leading up to Quantum Mechanics. It covers a lot of ground in both Physics and Math while also providing a lot of the intuition behind Physics and Math that textbooks and classes often leave out.

Self-Promotion

If you liked this article, you probably know someone else who will. It would help me out if you could share this article with them. If you really liked this article or any of my other articles (or videos, since I’ve started making videos for YouTube), you can help me write them by donating to my ko-fi account. If you’re not already a Medium member and you like the articles on the website, you can name me as your referred member and a portion of your monthly fee will help support me.

Joseph Mellor
Joseph Mellor

Written by Joseph Mellor

BS in Physics, Math, and CS with a minor in High-Performance Computing. You can find all my articles at https://josephmellor.xyz/articles/.

No responses yet

Write a response