Connectedreams’ Resources
Beginner’s Guide to Computer Science
1. What is Computer Science?
“There are many things that seem impossible only so long as one does not attempt them.”
― André Gide, Autumn Leaves
Tiny little AND and NOT gates combined and altered make a switch. A transistor is a miniature electronic component, which can also work as switches. We can put a few transistor switches together to make something called a logic gate, which compares several input currents and gives a different output as a result. Logic gates let computers make very simple decisions using a mathematical technique called Boolean algebra. Your brain makes decisions the same way. This is essentially how all computer chips work. For example, a memory chip contains hundreds of millions or even billions of transistors, each of which can be switched on or off individually.
That idea is the foundation stone of computer programs: the logical series of instructions that make computers do things.
2. *Computer Science Vs Computer Science Engineering
“Computer Science” is an umbrella term which encompasses four major areas of computing: theory, algorithms, programming languages, and architecture. At the undergraduate level, programs usually cover a broad range of computing topics and allow students to engage in projects across multiple areas.
A number of computer scientists have argued for the distinction of three separate paradigms in computer science. Peter Wegner argued that those paradigms are science, technology, and mathematics. Peter Denning’s working group argued that they are theory, abstraction, and design.
Amnon H. Eden described them as the “rationalist paradigm” which treats computer science as a branch of mathematics, which is prevalent in theoretical computer science, and mainly employs deductive reasoning, the “technocratic paradigm” which might be found in engineering approaches, most prominently in software engineering, and the “scientific paradigm” which approaches computer-related artifacts from the empirical perspective of natural sciences, identifiable in some branches of artificial intelligence.
The opinion on which we could conclude is that computer science is a multidisciplinary field which has evolved from multiple core disciplines and is influenced by several others.
“Computer Engineering” typically focuses specifically on computer hardware and software. It is an integration of computer science and electrical engineering. For this reason, many people who want to become computer engineers earn an undergraduate degree in electrical engineering (often with a minor or double major in computer science), and then earn a graduate degree in computer engineering. When searching for a graduate program, look for schools that are equally strong in computer science and engineering.
3. Career Options
Areas of Computer science engineering can be the broadly classified as theoretical computer science and applied computer science. Further classification yield segregation as follows.
Theoretical computer science being classified into Theory of Computation, Information and Coding Theory, Algorithms and Data Structures, Programming Language Theory, Formal Methods.
Applied computer science being classified into Artificial Intelligence, Computer Architecture and Engineering, Computer Performance Analysis, Computer Graphics and Visualization, Computer Security and Cryptography, Computational Science, Computer Networks, Concurrent Parallel and Distributed Systems, Databases and Software Engineering.
Theoretical Computer Science is mathematical and abstract in spirit, but it derives its motivation from practical and everyday computation.
Theory of computation: Theory of computation is focused on answering fundamental questions about what can be computed and what amount of resources are required to perform those computations.
Information and coding theory: Coding theory is the study of the properties of codes and their fitness for a specific application. Codes are used for data compression, cryptography, error detection and correction, and more recently also for network coding.
Programming language theory: Programming language theory is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of programming languages and their individual features.
Formal methods: Formal methods are best described as the application of a fairly broad variety of theoretical computer science fundamentals, in particular logic calculi, formal languages, automata theory, and program semantics, but also type systems and algebraic data types to problems in software and hardware specification and verification.
Applied computer science aims at identifying certain computer science concepts that can be used directly in solving real world problems.
Artificial intelligence: Artificial intelligence (AI) aims to or is required to synthesize goal-orientated processes such as problem-solving, decision-making, environmental adaptation, learning and communication found in humans and animals.
Computer architecture and engineering: Computer architecture, or digital computer organization, is the conceptual design and fundamental operational structure of a computer system.
Computer performance analysis: Computer performance analysis is the study of work flowing through computers with the general goals of improving throughput, controlling response time, using resources efficiently, eliminating bottlenecks, and predicting performance under anticipated peak loads.
Computer graphics and visualization: Computer graphics is the study of digital visual contents, and involves synthesis and manipulation of image data. The study is connected to many other fields in computer science, including computer vision, image processing, and computational geometry, and is heavily applied in the fields of special effects and video games.
Computer security and cryptography: Computer security is a branch of computer technology, whose objective includes protection of information from unauthorized access, disruption, or modification while maintaining the accessibility and usability of the system for its intended users. Cryptography is the practice and study of hiding (encryption) and therefore deciphering (decryption) information. Modern cryptography is largely related to computer science, for many encryption and decryption algorithms are based on their computational complexity.
Computational science: Computational science is the field of study concerned with constructing mathematical models and quantitative analysis techniques and using computers to analyze and solve scientific problems.
Computer networks: This branch of computer science aims to manage networks between computers worldwide.
Concurrent, parallel and distributed systems: Concurrency is a property of systems in which several computations are executing simultaneously, and potentially interacting with each other. A distributed system extends the idea of concurrency onto multiple computers connected through a network.
Databases: A database is intended to organize, store, and retrieve large amounts of data easily. Digital databases are managed using database management systems to store, create, maintain, and search data, through database models and query languages.
Software engineering: Software engineering deals with the organizing and analyzing of software — it doesn’t just deal with the creation or manufacture of new software, but its internal maintenance and arrangement.
4. Schools that offer Computer Science Engineering Specialization.
For a Computer science engineering aspirant, the following is the summary of schools offering data science specialization both at bachelor’s master’s or a Phd level. The programs offered are either on-campus, executive or online. Details can be found below.
- Massachusetts Institute of Technology (MIT)
- Stanford University.
- University of Oxford.
- Carnegie Mellon University.
- Harvard University.
- University of California, Berkeley (UCB).
- University of Cambridge.
- The Hong Kong University of Science and Technology.
- ETH Zurich — Swiss Federal Institute of Technology.
- Princeton University.
- National University of Singapore (NUS).
- The University of Hong Kong.
- The University of Melbourne.
- The University of Edinburgh.
- Imperial College London.
- University of Toronto.
- University of California, Los Angeles (UCLA).
- The Chinese University of Hong Kong (CUHK).
- The University of Tokyo.
- University of Washington.
- Nanyang Technological University, Singapore (NTU).
- University of Texas at Austin.
- UCL (University College London).
- University of British Columbia.
- University of Waterloo.
5. Self Learners’ Edge!
If you are a self learner, we have sketched out necessary requirements you’d like to go through.
Step I: Introduction to CS :
- Introduction to Computer Science and Programming.
- Udacity — Introduction to Computer Science.
- Coursera — Computer Science 101.
Step II: Object-oriented programming language (Atleast one)
- Coursera — Learn to Program: The Fundamentals
- MIT Intro to Programming in Java
- Google’s Python Class
- Coursera — Introduction to Python, Python Open Source E-Book
Step III: Master other programming languages
Step IV: Software Testing
Step V: Discrete Mathematics
- MIT Mathematics for Computer Science
- Coursera — Introduction to Logic
- Coursera — Linear and Discrete Optimization
- Coursera — Probabilistic Graphical Models
- Coursera — Game Theory
Step VI: Algorithms and Data Structures:
- MIT Introduction to Algorithms
- Coursera — Introduction to Algorithms Part 1 & Part 2
- Coursera — List of Algorithms
- Coursera — List of Data Structures
- Coursera — Book:The Algorithm Design Manual
Step VII: Operating Systems
Step VIII: UX Designing
Step IX: Artificial Intelligence
- Stanford University — Introduction to Robotics
- Stanford University — Natural Language Processing
- Stanford University — Machine Learning
Step X: Compiler Construction
Step XI: Cryptography
Step XII: Parallel Programming
Step XIII: Contribute to Code Base and Projects
Step XIV: Practice
6. Books
A list of free books for those interested in Computer Science.
Following links will lead you to free downloadable and readable content in each subject.
- Algorithms and Data Structures
- Artificial Intelligence and Logic Programming
- Assembly and Machine Languages
- Bioinformatics and Computational Biology
- Compiler/Interpreter Design and Construction
- Computational Complexity
- Computational Linguistics
- Computational Simulations and Modeling
- Computer and Machine Vision
- Computer and Video Game Programming
- Computer, Digital, and Mathematical Music
- Computer Graphics
- Computer Hardware, PC, and the History of Computers
- Computer and Programming Languages
- Computer Networks
- Computer Programming
- Computer System, Organization, and Architecture
- Computer White Papers
- Cryptography, Cryptology, and Cryptanalysis
- Data Analysis and Data Mining
- Database Theory and Systems
- Digital Signal, Sound and Imaging Processing
- Discrete and Finite Mathematics
- Electronics/Chips Design
- Functional Programming
- Graph Theory
- Human-Computer Interaction and Virtual Reality
- Information Retrieval (IR) & Search Engines
- Information Security
- Information Technology White Papers
- Information Theory and Systems
- Introduction to Computer Science
- Machine Learning
- Mathematical Logic, Computability, etc.
- Mobile Computing and Programming
- Neural Networks
- Numerical Analysis and Scientific Computing
- Object-Oriented Analysis, Design, and Programming
- Operating Systems (OS) Design and Construction
- Parallel and Distributed Computing and Programming
- Robotics, Control, and Automation
- Software Development White Papers
- Software Design and Patterns
- Software Engineering
- TeX, LaTeX, and AMS-LateX Typesetting
- Theory of Computation and Computing
- Theory of Programming Languages
- Uncategorized and Miscellaneous Books
7. Boot Camps
A wiki of computer science engineering bootcamps
> 24 Weeks
- Holberton School (San Francisco — Full Stack)
- Galvanize (San Francisco, Denver, Boulder, Fort Collins, Austin, Seattle — Full Stack, rooted in Javascript)
- Launch School (Atlanta and Online, Full Stack Ruby and JavaScript)
- Nashville Software School (Nashville, TN — HTML/CSS, JS, RoR, .NET/C#, Node.js)
- Sabio — Learn To Code — Change the World (Los Angles + Newport Beach, 5 year professional software engineer training)
- Starter School (Chicago — Programming, Design, Entrepreneurship)
- Turing School of Software & Design (Denver — Ruby)
- Bloc (US — Ruby, Rails, Javascript)
- Thinkful (US — HTML/CSS, Angular, React, Node.js and/or Python)
< 24 Weeks
- Codeup (San Antonio — PHP, JS, jQuery)
- CareerFoundry (Remote with Expert Mentor — Ruby on Rails and iOS)
- Coding Campus (Utah & Online — Full Stack Java) Part Time
- DevMountain (Provo, Salt Lake City, Dallas — Full Stack Javascript, iOS, UX design bootcamps)
- DigitalCrafts (Atlanta — Full Stack Javascript / Node.js, PHP / LAMP, iOS & Swift, Front-end Web — full/part-time — $12k)
- Epicodus (Portland, OR — RoR, JS)
- Fullstack Academy (NYC — JS, Node.js, AngularJS)
- Portland Code School (Portland — JS, UX Design, Wordpress)
- Skill Distillery (Denver, CO — Java, HTML/CSS, JS, SQL)
11–12 Weeks
- Anyone Can Learn To Code (SF & Chicago — Part Time — RoR, JS)
- App Academy (SF & New York — Full Stack RoR & JS — $7 to 12K)
- BrainStation (Toronto — Front-End, Back-End, Mobile)
- Byte Academy (NYC — Python, JS)
- Code Chicago (Chicago — RoR, HTML5, CSS, Javascript — $2K)
- Coder Camps (7 Locations in the US — .NET, JS, Java)
- Coder Vox (Austin — PHP)
- Coding Campus (Utah & Online — Python/Django + Angular — $9,700)
- Coding Dojo (San Jose/Seattle/LA — Full Stack LAMP, MEAN, Ruby on Rails)
- Codesmith (LA) — Full Stack JavaScript, Computer Science)
- DaVinci Coders (Louisville, CO)
- Designation (Chicago — UI/UX, Front-End — $6K)
- DevMountain (Provo or Salt Lake — JS, Angular, Node.js, iOS — $7.9K)
- DevPoint Labs (Salt Lake City, Las Vegas)
- Disruption Institute (Kansas City — Mobile Development)
- Flatiron School (NYC)
- General Assembly (NYC, SF, LA, Boston, DC, London, Sydney, Hong Kong, Atlanta)
- GoCode (Costa Rica — Python)
- Hacker Coding Academy (SF — JS)
- Hacker School (NYC)
- Hack Reactor (SF — JS)
- LearningFuze (Irvine, CA)
- Metis (Boston — Ruby on Rails)
- MakerSquare (SF, Austin, Los Angeles, NYC — JS)
- Sabio — Learn To Code — Change the World (Los Angeles + Newport Beach, Full Stack Web)
- The Software Guild | Coding Bootcamp (Cleveland, Minneapolis, Louisville — Java/.NET, Full Stack)
- Starter League (Chicago)
- Turn To Tech (NYC — iOS, Ruby on Rails, Android | full/part time | 8–16 weeks)
- Viking Code School( US, Anywhere — Ruby on Rails | Full/part time)
- Zipfian Academy (SF — Data Science/Engineering)
8–10 Weeks
- AIT (Washington DC)
- Arcade Intelligence (Houston — Unity Game Development)
- Betamore (Baltimore)
- Bradfield (San Francisco, CA) — “masters” program, for existing bootcamp/university grads only
- Code Chicago (Chicago, IL)
- Code Fellows (Seattle and Portland, OR — Full-Stack JavaScript, Python, Ruby on Rails, iOS Development, Web UI Development)
- Coding House (Fremont, CA — JavaScript and Ruby)
- Deep Dive Coders (Albuquerque, NM — PHP)
- Delta Program (Austin — Android, Java, Mobile Design)
- Devatory (Chicago)
- Dev Bootcamp (SF & Chicago — RoR)
- Digital Professional Institute — (Chicago, IL)
- Dojo Dev Camp (Provo, UT — Python, HTML/CSS, JS)
- Hackbright Academy (SF — Python) for women only
- Hackership (Berlin, Costa Rica — self-directed)
- Interview Kickstart (Online, and Silicon Valley) for Algorithms only
- Ironhack (Miami, Barcelona & Madrid — RoR, iOS)
- Launch Academy (Boston)
- Level (Boston, Seattle, Charlotte, Silicon Valley)
- Mobile Makers Academy (Chicago — iOS)
- RefactorU (Boulder, CO — JavaScript: Mongo, Express, Angular, Node)
- Startup Institute (London, Berlin, Boston, New York, Chicago)
- Wyncode Academy (Miami, FL / Ft. Lauderdale, FL — Ruby on Rails, JS, HTML/CSS)
6 Weeks
- Grand Circus (Detroit)
- Wyncode Academy (Miami, FL — iOS)
5 Weeks
- Hackership (Berkeley — RoR, JS, HTML/CSS)
4 Weeks
- Code Fellows (Seattle, Portland — JS, HTML/CSS)
- Coding Campus (Utah — Javascript, HTML/CSS)
1 Week
- Big Nerd Ranch (California, Georgia)
- Cyrus Innovation (NYC — Ruby)
- Jumpstart Lab (Denver)
8. Scholarships!
In the quest for learning, there maybe a financial limitation, as a result it may become difficult for an aspirant to pursue their dreams. So we have compiled resources of scholarships for you.
- AACE International Competitive Scholarships
- ExCel Scholarship
- CyberCorps Security Scholarship
- Xerox Minority Scholarship
- Sarder Scholarship
- SMART Scholarship
- AFCEA Cyber Security Scholarship
- Electronic Document Systems Foundation Scholarship
- Anita Borg Memorial Scholarship Sponsored by Google
- EDSF Scholarship
- Ford Motor Tribal Scholarship
- Catching The Dream Scholarship
- ESA Foundation
- Betty Stevens Frecknall Scholarship
- National Security Agency Scholarship
- Dell Scholarship
- SWE-GGS Scholarship
- Wayne V. Black Scholarship
- Stokes Educational Scholarship
- Horizons Scholarship
- Ralph W. Shrader Scholarship
- IEEE Scholarship
- Lockheed Martin Scholarship
- Microsoft Scholarship
- Banatao Scholarship
- Dr. Robert W. Sims Scholarship
- GET-IT Scholarship
- Henry Beckman Scholarship
- Hoku Scholarship
- Lambeth Family Scholarship
- Admiral Grace Murray Hopper Scholarship
- Intel Scholarship
- Citigroup Scholarship
- General Mills Scholarship
- Honeywell International Scholarship
- Marathon Oil Scholarship
- IBM Scholarship
- Lucy Kasparian Aharonian Scholarship
- HENAAC Scholars Program
- Northrop Grumman Scholarship
- Paul and Ellen Ruckes Scholarship
- Scott Tarbell Scholarship
- AFCEA ROTC Scholarship
- AWC Scholarship
- Upsilon Pi Epsilon Scholarship
- Richard E. Merwin Scholarship
- Lance Stafford Larson Scholarship
- ARA Scholarship
- National Laboratory Scholarship
- West Virginia Scholarship
8. Computer Science Podcasts
You can learn the basics and keep up with the latest news in computer science engineering by listening to these great podcasts.
- Programming Throwdown
- Hanselminutes
- Software Engineering Radio
- FLOSS Weekly
- This Developer’s Life
- Herding Code
- Java Posse
- The Changelog
- Stanford Engineering Everywhere
- This isn’t a podcast but a series of lectures posted by Stanford University aimed at teaching the basics of computer science.
- PHP Academy
- This Developer’s Life
- The Changelog
- The Dev Show. http://5by5.tv/devshow
- Pragmatic
- Ruby5
- Ruby Show
- Build and Analyze.
- yayQuery
- jQuery Podcast
- JSConf Live
10. Projects around the globe.
1) Computer scientists and engineers have long dreamed of harnessing DNA’s tininess and resilience for storing digital data. The idea is to encode all those 0s and 1s into the molecules A, C, G, and T that form the twisted, ladder-shaped DNA polymer — and this decade’s advances in DNA synthesis and sequencing have bought the technology forward by leaps and bounds. Recent experiments indicate that we might one day be able to encode all the world’s digital information into a few liters of DNA — and read it back after thousands of years. Microsoft Research announced last month that it would pay synthetic biology start-up Twist Bioscience an undisclosed amount to make 10 million DNA strands designed by Microsoft’s computer scientists to store data. Top memory manufacturer Micron Technology is also funding DNA digital storage research to determine whether a nucleic acid–based system can expand the limits of electronic memory. This influx of money and interest could lead to research and progress that eventually drive down today’s prohibitively high costs and make DNA data storage possible within the decade, researchers say.
2) China launched the world’s first quantum satellite on 16 August. The Quantum Experiments at Space Scale (QUESS) satellite, which lifted off from the Jiuquan Satellite Launch Center in northern China at 1:40 a.m. local time, successfully entered orbit at an altitude of 500 kilometres. Quantum communications are secure because any tinkering with them is detectable. Two parties can communicate secretly — by sharing a encryption key encoded in the polarization of a string of photons, say — safe in the knowledge that any eavesdropping would leave its mark.
3) Aquila is a solar-powered airplane that can be used to bring affordable internet to hundreds of millions of people in the hardest-to-reach places. When complete, Aquila will be able to circle a region up to 60 miles in diameter, beaming connectivity down from an altitude of more than 60,000 feet using laser communications and millimeter wave systems. Aquila is designed to be hyper efficient, so it can fly for up to three months at a time. The aircraft has the wingspan of an airliner, but at cruising speed it will consume only 5,000 watts — the same amount as three hair dryers, or a high-end microwave.
9. Conversations With 3 Experts
Here are a few excerpts from my conversations with 3 experts, who work in Computer Science Engineering discipline every day at work and graduated in the 90s and 00s.
a. Conversation with Srishti Sethi | Learning Technology Designer/ Developer at MIT Media Lab
I am primarily interested in designing tools that could support teaching and learning. My passion lies in designing online learning environments that could foster the spirit of community-based learning or help create opportunities for people from underrepresented groups.
At the Media Lab, I am part of the Learning Over Education Initiative, that seeks to develop new technologies for creative learning.
b. Conversation with Nivedita Arora | Research Intern at Intel Labs
Computer science for me is an interdisciplinary tool which I can apply to as many places as I can and most important thing that I would like to emphasis is that computer science is “empowering tool”.
I am exploring various aspects of computer science which ranges from wearable to non-immersive brain wave interaction. Brain has approximately 10¹² neurons and 10¹⁵ sinopsis using 2 Watts of power but if we just translate this architecture to hardware that would use 20 gigahertz which accounts half of singapore’s energy in a day. Brain does approximate calculation on contrary to hardware devices which do accurate calculation to take decisions. This approximation algorithms is the new future into the brain wave interaction discipline of computer science.
I believe that everyone has the curiosity embedded into themselves and everyone can make a dent in this world. I encourage everyone to try and explore to make their own things by not necessarily being entrepreneur but one can take up research or job and using computer science as a hammer which could bend quite many nails of multidisciplinary problem statements around the globe.
c. Conversation with Parita Pooj | Associate Developer SAP Labs
Computer science comprises of different worlds which involve different core subjects of computer engineering. These worlds are tools which can be extended to multiple disciplines to solve varied problems and questions. At the very base of computer science is development of logic and problem solving which is fundamental and extremely important not just in any discipline but every aspect of life.
Algorithms is a core subject related to computer science and builds up a base that supports your outlook and problem solving ability in any other discipline in engineering.
Currently I am working in the area of computer databases and computer imaging. This area can be explained in simpler terminology as storage of correlation and information of image rather than just pixel so that you can perform computation on top of it to retrieve intelligent information.
Beginner’s Guide to Data Science ← P R E V I O U S
N E X T → Shit You Should Know If You Are New in UX Business!
About The Author — Venali Sonone | Content Writer at Connectedreams.com | Veermata Jijabai Technical Institute, Mumbai
Connectedreams.com is an online data-driven, cultural context-aware networking platform, bridging the role model & mentorship gap.