Skip to content

Computational Science Foundations for CMDA

Hey everyone! I'm Johann Rudi and this is the primary go-to page for the course 👆

Material


Spring 2026

CMDA 3634 CRN 13192 CRN 13480

Meetings

Type Days Begin End Location
Sessions M W 16:00 17:15 DDS 170
Office hour Tue 14:00 15:00 DDS 302
Office hour Thu 15:30 16:30 DDS 302
Tutoring lab (Jenifer De Jager) Fri 11:00 12:00 DDS 345 (*)

(*) On Friday, February 27, 2026 the Tutoring lab will be in DDS 445 (not in room 345).


About the course

Overview

🏃 I give a plain language about this course. This course introduces how to think about large, open-ended problems in computational mathematics and data science – and how to do it at scale. You'll be working on challenges that don't come with step-by-step instructions. Instead, you are in charge to form hypotheses, test them, and draw on your background in mathematics, statistics, and computing to make sense of what you find.

The key question: How can we design parallel algorithms that deliver fast, approximate solutions to our problems. The algorithms must keep getting faster as we scale from 1 to 10^3 to 10^6 compute units (workers) and beyond?

This is where your creativity intersects with computing power. You'll learn not just to solve problems, but to solve them in ways that make the most of the compute system at your disposal.

Which topics will I cover?

⛵️ I plan to cover three topics.

  1. 🍪 Interfaces is about the tools that make human-computer interaction efficient and systematic, including effective uses of terminals, editors, version control, AI tools, and more.

  2. 🍪 The Go language has build-in concurrency. It will challenge your ability on parallel thinking. It will guide you toward understanding concurrency, interdependence of actions, shared memory across workers, distributed memory and communication between workers.

  3. 🍪 Neural networks and PyTorch allow tapping into massive parallelism. Building on your lower-level skills, you will understand – and appreciate – how neural networks are trained even when Python interfaces hide much of the complexity from you. You'll be able to train using so-called distributed data parallelism.

What to know before you commit

🌱 To get the most out of this course, you should already have a few skills in your toolkit:

  • Comfort with a programming language: You've written programs in C/C++, Java, Python, or something similar, and you can read and write code without feeling lost.

If you're missing this, don't panic – just be ready to review and practice early on so you can hit the ground running.

Do we have a textbook?

📚 Because this course spans a wide range of disciplines and topics, there's no single textbook that could do it justice. Instead, we'll draw from a variety of resources – different formats, perspectives, and mediums – to give you the most complete picture possible.

All resource links and references will be posted on this course's 🎊 Wiki; and it will be organized by topic. Our wiki is a living document, updated continuously as we discover new materials and opportunities to deepen your learning.

What will you be working on?

🏋️ This course is hands-on from start to finish. You'll build your skills through:

  • ✏️ Individual homework assignments where you are the sole contributor, giving you the chance to develop and showcase your own ideas.
  • 🔨 Team projects completed with a group, where you'll learn to effectively collaborate and coordinate as well as present your group's work.
  • 📝 You'll demonstrate your skills in Midterm and Final Exams.

How you earn credit

🍦 Your progress will be recognized in multiple ways:

  • in-class assignments and participation
  • correct and on-time submission of assignments and projects, that's easy credit for staying organized
  • peer review of your fellow students' work
  • evaluation of assignments and projects by the instructor/TA
  • midterm and final exams

How your grade will be calculated is described in the Grading section of the Course Policy.

Can you use AI?

✨ I take an approach to solving problems and acquiring knowledge that can be different compared to other professors. To me, interdisciplinary problem solving happens in a network between people of diverse expertise and technology - not just one person sitting in front of a computer. AI is now part of this network, whether we want it to be or not. The key question is how does AI improve our skills or speed at solving problems?

My view is that AI has began impacting us no matter what. But we also have the power to shape how AI develops if we engage with it thoughtfully. This class gives you a safe space to creatively experiment with AI without shame, fear, or guilt.

✨ I want to be clear: You will not be penalized just for using AI in this course; unless it is explicitly said otherwise for a specific assignment. AI use is optional - use what's helpful to you! AI is not always the right or best choice for a given problem. We'll also discuss our experiences openly as a class to promote mindful AI integration. For instance, I'll my share experience, prompts and activities to guide your AI exploration.

While experimenting freely, keep these points in mind:

  • AI can demonstrate biases, inaccuracies, and hallucinations at times. Always validate the content before accepting it.
  • Be cautious with data privacy. Don't input anything too personal or private. You can't control where it ends up. If you wouldn't post it on the internet, don't give it to an AI.
  • Recognize the limitations. AI doesn't truly comprehend facts or meaning (yet). It calculates guesses using algorithms based on linear algebra and probability, which means AI can provide false information without itself noticing or understanding. It will present all information confidently to you - true or false.
  • AI content may initially seem impressive, but usually is not as good as you think it is. I call these AI goggles. Take care whenever using AI-generated text and code.

✨ Also keep in mind that my AI-forward policy only applies to this class. Other professors likely have different rules. Using AI without permission could violate academic integrity policies. So always check the specific guidelines for each class first!

Let's explore AI as a creative tool to augment our skills, not replace them. I'm excited to see what we can discover together! Let me know if you ever have any other questions.

Original source: This text on AI is modified from the original written by Lance Cummings.

Fair AI use: do it openly

📋 When AI has been used for assigned work it must be open, comprehensively documented, and fully and clearly disclosed. What this exactly means is described in the AI section of the Course Policy.


Acknowledgements

The material of this course was partially drafted and edited with the support of AI:

  • OpenAI GPT-5 – GPT-5.2

The setup of the software infrastructure for this course has been supported by AI:

  • Anthropic Claude Sonnet 4.5