What should be included in a freshman 'Mathematics for computer programmers' course?

Course Queries Syllabus Queries 2 years ago

0 2 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Syllabus Queries related to Course Queries. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

Many universities are changing up the way that they teach math service courses. 1-3 semesters of calculus and maybe a course in linear algebra are often included in majors (such as computer science) that will not use the majority of the material.

However, these courses are often justified by saying that they promote creative and mathematical thinking, and I agree that they are good precisely because of that. However, many fields of mathematics outside of calculus have the same effect.

I'd like to hear from a professional computer programmer's viewpoint what topics could be covered in a yearlong `Mathematics for Computer Programmers' course such that:

  1. This course would be the only math course (besides remedial courses) that computer science students take.
  2. The course needs to introduce them to the same level of mathematical rigor as a typical 2-semester calculus sequence.
  3. The course covers the majority of mathematics that computer programmers tend to run into.

Additional requirements can be added if these are too vague.

profilepic.png
manpreet 2 years ago

TL;DR 2-semester course is not enough.

Disclaimer: I write this as a computer-scientist that uses math a lot in his work (I'm a research assistant at a university).

Introduction:

There are three (overlapping) aspects of math in computer science:

  • Math that is actually useful.
  • Math that you can run into, and is generally good to know.
  • Math that lets you build more awesome math.

First is essential, because the students need to be able to do stuff. Second is important, because you cannot teach students everything, and at the same time trying to get into a new field all by yourself is quite hard (i.e. it's good to know the barest basics of everything). The third are these which aren't directly useful, but present meta-concepts that happen all the time (a bit like design patterns in programming); you can live without them, but intuition you gain there makes life much easier.

The list was sorted by (subjectively defined) importance.

Math that is actually useful.

  • Logic. How to handle quantifiers and read formulas, tautologies, satisfiability; less important: free variables, substitutions and unifiers.
  • Asymptotics. This is a must. The big-oh notation, etc., term manipulation, basic limits, sequences and series, both →∞ and 0→0.
  • Graph theory. This is a must. Graphs are so prevalent and ubiquitous nowadays that it would be a major setback to not know the basics of graph theory (e.g. searching algorithms, connectedness and flows).
  • Linear algebra. This is a must. What is a linear space, matrices, determinants, orthogonalization, linear programming, perhaps even eigenvalues.
  • Probability. Strongly desirable. Discrete spaces, Bayes theorem, expected values, Markov's, Chebyshev and Chernoff inequalities, the law of large numbers.
  • Data processing. Strongly desirable. It's important to know how to process a gathered set of data without destroying some of its vital properties. This includes a bit of statistics, some filters, means, clustering, basic approximation, modelling and regression.

Math that you can run into, and is generally good to know.

  • Numerical analysis. Floating-point arithmetic and error-analysis are a must.
  • Universal algebra. It's essential to make the students not afraid of abstract structures. No advanced stuff, no need for all the groups/rings/skew fields definitions. The barest essentials so that students won't run scared when they see algebraic data types in functional programming, monoids in automata theory or group theory in cryptography.
  • Statistical and probabilistic modelling. This is strongly desirable. Markov chains and Monte-Carlo methods.
  • Differential equations. Differential equations happen to explain a lot about world's interactions and are used frequently in multitude of practical applications. This is strongly desirable, because it's just hard to learn them with no help.
  • Information theory and cryptography. This is a must for modern programmers. Symmetric and public-key cryptography, handshakes, entropy, notion of entropy extractor, Kolmogorov complexity, impossibility of perfect compression, lower bound on comparation-based sorting complexity.
  • Signal processing. Fourier transform is strongly desirable. Kalman filters would be good, but there's not enough time. Just anything that would let them reduce the noise in a practical setting.

Math that lets you build more awesome math.

  • Term rewriting. Notion of term rewriting is very powerful and underappreciated. A lot of processes can be explained in terms of term rewriting and it's good to know the relevant intuitions. It's useful for showing termination property of algorithms.
  • Automata theory. The notion of finite automaton is a must.
  • Complexity theory. Basic complexity classes and inter-dependencies (including randomized algorithms classes). Maybe other models of computations like 

0 views   0 shares

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.