Computer Science Courses You Missed (Part 3: Complexity & Computation)
Photo by Jason Leung on Unsplash

Computer Science Courses You Missed (Part 3: Complexity & Computation)

This is Part 3 of a sequence (Part 1 and Part 2 are relevant, though they are not prerequisites). Here, I explain why it is important to understand the nature of computation the way it is implemented in modern computers and provide some pointers in case you are interested in learning more.

Most programmers understand regular expressions and state machines intuitively, but only a relatively small fraction of them have the understanding needed to reason about the limitations of these tools.

Can you use a regular expression to check proper nesting of parentheses? (E.g. determine that "( ( ) ) ( ( ( ) ( ( ) ) ) )" is valid while "( ( ( ) ) " is not, for arbitrarily long inputs.) How much do deterministic (easy to turn into code) and non-deterministic (harder to turn into code) state machines differ? This is the sort of topics that the first part of "Introduction to the Theory of Computation" covers and it will be well worth your time.

It is hard to be a versatile software engineer without understanding the limitations of the languages you work with, and regular expressions and finite automata are among the simplest "languages" in day to day use; from there, you go to stack machines and beyond. Cement your understanding by doing some independent research on compilers (for example, consider this random course handout that you get from a Google search for "compilers context free C").

It gets better: there is fascinating, and not too difficult to grasp, theory behind what computers (as well as mathematical formulas) can and can not compute. Not everything is possible, even with an infinite tape! (An inside joke that you will understand once you learn about Turing machines and the halting problem.)

Computability is the subject of the second part of Sipser's book. Some of that material is very relevant to #cybersecurity professionals because it has implications about what is practically achievable when evaluating programs via automation (think: static analysis, emulation, and malware analysis).

Finally, the section on Complexity ties back nicely into what you may have already learned from your reading and practice in Algorithms: no better way to master a concept than approaching it from multiple angles. Happy Computing!

要查看或添加评论,请登录

Hristo Bojinov的更多文章

  • Normalcy and Tech Management

    Normalcy and Tech Management

    The inspiration for this came from Chapter 26 in "The Myth of Normal" which resonated with my work experience (as a…

    4 条评论
  • Pricing Education: A Worksheet

    Pricing Education: A Worksheet

    Not too many years ago, someone respectable described to me K-12 education in the United States as "glorified daycare"…

    2 条评论
  • Afterthoughts on Cybersecurity

    Afterthoughts on Cybersecurity

    I think a lot about computer security concepts and practice, and this one thought track has been recurring, practically…

    1 条评论
  • Computer Science Courses You Missed (Part 6: Career Calculus)

    Computer Science Courses You Missed (Part 6: Career Calculus)

    The typical college curriculum does not cover what a career in software looks like in general, and neither does it…

    2 条评论
  • Computer Science Courses You Missed (Part 5: Writing)

    Computer Science Courses You Missed (Part 5: Writing)

    Why does writing merit a mention in this sequence on Computer Science? I hope you will find the answer in at least one…

  • Computer Science Courses You Missed (Part 4: Mastery)

    Computer Science Courses You Missed (Part 4: Mastery)

    After three sections on core Computer Science subject matter (1, 2, 3), we switch to meta-topics: first up is the…

  • 18 Books on Hacking for $30! (10-18)

    18 Books on Hacking for $30! (10-18)

    In this final installment (see also part 1 and part 2) I review the domain-specific titles in the bundle and compare my…

  • 18 Books on Hacking for $30! (5-9)

    18 Books on Hacking for $30! (5-9)

    This series of posts reviews each title in a 18-for-$30 Humble bundle on Hacking. I already covered the first four…

    1 条评论
  • 18 Books on Hacking for $30! (1-4)

    18 Books on Hacking for $30! (1-4)

    A colleague recently pointed out this Humble book bundle which consists of 18 (that's right eighteen!) books about…

  • Computer Science Courses You Missed (Part 2: Algorithms)

    Computer Science Courses You Missed (Part 2: Algorithms)

    Knowing how to write solid code (the topic of Part 1 in this series) is only a small part of being a well-rounded…

    3 条评论

社区洞察

其他会员也浏览了