article

what computer science majors should know (2015)

[WHAT]

  1. ] another look at what computer science majors should know

[WHY]

  1. ] What should every student know to get a good job?
  2. ] What should every student know to maintain lifelong employment?
  3. ] What should every student know to enter graduate school?
  4. ] What should every student know to benefit society?

[WHERE]

  1. ] READ THE FULL ARTICLE
    1. ] http://matt.might.net/articles/what-cs-majors-should-know/

[WHEN]

  1. ] build a portfolio, not a resume
    1. ] example blog with posts about projects, doc open source contribs, github
  2. ] learn technical communication
    1. ]
  3. ] an engineering core
    1. ] CS is not engineering but its close enough, will work with traditional engineers, need to speak the same language
    2. ] language rooted in real analysis, linear algebra, probability and physics.
    3. ] In constructing sound simulations, a command of probability and (often times) linear algebra is invaluable. In interpreting results, there is no substitute for a solid understanding of statistics.
  4. ] the unix philosophy
    1. ] The Unix philosophy (as opposed to Unix itself) is one that emphasizes linguistic abstraction and composition in order to effect computation. 
    2. ] In practice, this means becoming comfortable with the notion of command-line computing, text-file configuration and IDE-less software development
  5. ] fluent in basic unix ability
    1. ] navigate and manipulate the filesystem;
    2. ] compose processes with pipes;
    3. ] comfortably edit a file with emacs and vim;
    4. ] create, modify and execute a Makefile for a software project;
    5. ] write simple shell scripts.
  6. ] advantages of the unix way
    1. ]
  7. ] system administration
    1. ] must be able to competently and securely administer their own systems and networks.  Many tasks in software development are most efficiently executed without passing through a systems administrator.
  8. ] system admin tasks
    1. ] Install and administer a Linux distribution.
    2. ] Configure and compile the Linux kernel.
    3. ] Troubleshoot a connection with dig, ping and traceroute.
    4. ] Compile and configure a web server like apache.
    5. ] Compile and configure a DNS daemon like bind.
    6. ] Maintain a web site with a text editor.
    7. ] Cut and crimp a network cable.
  9. ] programming languages
    1. ] While it is important to teach languages relevant to employers, it is equally important that students learn how to teach themselves new languages.
    2. ] The best way to learn how to learn progamming languages is to learn multiple programming languages and programming paradigms.
    3. ] Yet, to truly understand programming languages, one must implement one. Ideally, every computer science major would take a compilers class. At a minimum, every computer science major should implement an interpreter.
    4. ] LIST languages = Racket, C , JavaScript, Java, Standard ML, prolog, Scala, Haskell, C++ and Assembly
  10. ] discrete mathematics
  11. ] data structures and algorithms
  12. ] theory
  13. ] architecure
  14. ] operating systems
  15. ] networking
  16. ] security
  17. ] cryptography
  18. ] software testing
  19. ] ux design
  20. ] visualization
  21. ] parallelism
  22. ] software engineering
  23. ] formal methods
  24. ] graphics and simulation
  25. ] robotics
  26. ] artificial intelligence
  27. ] machine learning
  28. ] databases

[EXAMPLE]

  1. ] AUTO SUMMARY by SMMRY.COM
    1. Having emerged from engineering and mathematics, computer science programs take a resume-based approach to hiring off their graduates.
    2. Computer scientists should be comfortable with and practiced in the Unix philosophy of computing.
    3. Computer scientists should understand generative programming; lexical scope; closures; continuations; higher-order functions; dynamic dispatch; subtyping; modules and functors; and monads as semantic concepts distinct from any specific syntax.
    4. More important than knowing a specific algorithm or data structure, computer scientists must understand how to design algorithms and how to span the gap between an algorithm in the ideal and the nitty-gritty of its implementation.
    5. Computer scientists should understand a computer from the transistors up.
    6. Computer scientists must be aware of the means by which a program can be compromised.
    7. If for no other reason than its outsized impact on the early history of computing, computer scientists should study artificial intelligence.

[HOW-TO]

  1. ]

[REFERENCE]

  1. ] # 4430 - learning to code

 

Details Photos Edit more

Details

ID: 4549

NAME: what-computer-science-majors-should-know

DESCRIPTION: ] by Matt Might - a comprehensive listing of skills(28) for computer science students(CS), aka future programmers/developers, by a university professor in the midst of re assessing their current curriculum

AUTHOR: article.author/s

EDITOR: article.editor/s

PUBLISHER: article.publisher/s

STATUS: Write

PRIORITY: 0

OWNER ID: 75

Content Photos Edit more

photos

page_photo

actions

Email Email-Owner SMS and