Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What Computer Science concepts should I know? [closed]

People also ask

What are important concepts in computer science?

Topics include: Computers and Computation, Algorithms and Tractability, Systems and Networks, Artificial Intelligence and Machine Learning, Programming Languages and Compilers, Cryptography and Security, Graphics and Vision, Human Computer Interaction, Network Science, Human Computation, and Robotics.

What are the 5 concept areas of computer science?

Computer science is considered as part of a family of five separate yet interrelated disciplines: computer engineering, computer science, information systems, information technology, and software engineering.

What every computer science graduate should know?

Operating systems As such, computer scientists should be aware of how kernels handle system calls, paging, scheduling, context-switching, filesystems and internal resource management. A good understanding of operating systems is secondary only to an understanding of compilers and architecture for achieving performance.


Take a look at this blog post by Steve Yegge (formerly of Amazon, now at Google):

  • The Five Essential Phone Screen Questions

It goes into some detail about the the five most important concepts that developers should be required to know:

  1. Basic programming (including recursion, file I/O, formatted output, loops etc)
  2. Object oriented design (including design patterns etc). You should be able to produce sensible OO designs as well as understanding the concepts.
  3. Scripting and regexes.
  4. Data structures -- lists, sets, hashtables, trees, graphs, and so on -- as well as Big O notation and algorithmic complexity.
  5. Bits, bytes and binary numbers -- how numbers are represented within the computer, and how to manipulate them.

You definitely should understand the Big-O notation and Big-O estimations of algorithms - what it is, how it is used, why it is important, how you compare two algorithms given their Big-O estimations, how you build Big-O estimations for the simple algorithms.


I find it a little funny that you're looking for computer science subjects, but find wikipedia too academic :D

Anyway, here goes, in no particular order:

  • The relational model: Introduction to Database systems
  • Object orientation : Object Thinking
  • Complexity and computation theory (think Turing machines and automata): Introduction to theory of computation
  • A little compiler design: The Dragon Book, although this might be a little over too in-depth for your needs.
  • Operating system concepts: Modern operating systems
  • People skills: How to win friends and influence people
  • Teamwork: Peopleware
  • User interface design: The inmates are running the asylum

Some concepts that helped my development (intellect and code):

  • Lexing, Parsing, String matching, Regex
  • Memoization
    • encapsulation/scoping/closures
    • caching
  • Recursion
  • Iterators/Generators
  • Functional programming - John Hughes' amazing article had me at "why"

These are whole domains of discrete math, but a serious introduction is required for CS:

  • Matrix/Linear Algebra
  • Graph Theory

Although lectures and articles by Mark Jason-Dominus are often directed to Perl hackers, I think any programmer would benefit from his clear presentation and real code, especially in Higher Order Perl.


I would say nowadays an understanding of Object Orientated Programming is a must, even if you don’t need to use it day to day.

From this I would also say understanding the most common patterns can also help.


I see several good CS concepts identified but little talk about Math.

I suggest that you look into discrete mathematics. It has a wide range of useful problems starting with logical proofs which help you write conditions in code. Graph theory and combinatorics also help with complex problem resolution and algorithm optimization.

While we are on the subject of math, linear algebra is typically a prerequisite for advance computer graphics classes.