CS-4341/6341: Continuous Algorithms

How learning works in this course


Let's start by understanding what this course is aiming to do, and what you'll take away from the course:

  • Our main goal is to learn how to apply continuous mathematics to problems in computer science.

  • What does this mean?
    • Consider machine learning. Many algorithms in machine learning require a combination of skills from calculus, probability and optimization, the three main topics of this course.
    • In fact, the very last module in the course will see each of these topics come together when we study basic machine learning. All three, along with linear algebra are crucial to a foundation for machine learning.
    • At the same time, other areas of computer science also make use of these core topics. For example: robotics, simulation, randomized algorithms. We will explore some of these.

  • Why is this continuous math stuff important?
    • For the longest time in CS, it was thought that discrete math was sufficient.
    • And it's true that you can learn a lot in algorithms with just discrete math. In fact, you can spend a lifetime in just graph algorithms, if you desire.
    • But a lot of exciting new CS is based on continuous math.
    • And this core body of math has stood the test of time: the future will invariably find uses for it.

  • Another goal of this course is to connect you to CS applications in science and engineering. Often, we think of CS as applied to the business world with databases, websites, servers and the like. But there are equally many interesting applications in science and engineering. We will examine some applications when we look at robotics and the simulation of physical systems.

  • A third goal of this course is to learn continuous math concepts in a different way than you might have in the past.
    • First, we will often see the continuous math directly embedded in a CS application first before getting into the details. This is what we'll start with in the Introduction.
    • Second, we will learn math concepts through programming.
 

Let's explain the last point, which is critical to how you will learn in this course:

  • Talking to students who've taken calculus and stats, we've discovered that the experience has not always been positive. Also, for many students, the high-school math experience has not been the best, or the preparation somewhat mixed.
  • Often, math turns into a "how do I plug into formulas" or "what's the right equation to mess with?". This is a terrible way to learn math because math has both astonishing beauty and powerful ideas that become building blocks for thinking. It's the reason why people find math to be "unreasonably effective" (Nobelist Eugene Wigner) in explanatory power. And for CS, it's unreasonably effective in designing algorithms to achieve some end, such as controlling a robot.
  • Instead, we are going to be interested mostly in concepts. As we will see, programming provides a powerful way of "doing math", which will let us apply these concepts immediately.
  • Even better, we can learn new concepts through programming: by using code to both explore new ideas and to see the code itself as a way to understand an idea.
  • Also, we will see that one can learn science via programming.

Let's next look at how you will learn in the course:

  • Prior to class: a quick review of material from the last class. Complete pre-class exercises. These are exercises you will be assigned in a new module, typically the first one ones.
  • In class: (1) the lecture material; (2) giving your full effort to the exercises in class.
  • Outside class: (1) complete the module exercises; (2) the assignments; (3) longer projects.
  • In and out of class: Take group discussions seriously. Are you willing to take responsibility for your group's learning, by asking good questions, helping answer other questions?

Lastly, develop and raise your inner curiosity. Seek to transcend being the passive "Is this on the exam?" student and start pushing your envelope. You can do that easily in this course because continuous math (and its applications to CS) are endless. By exploring on your own a topic not covered in the course, you will prepare yourself for the day when everything new is something you will explore on your own.