Code Monkey home page Code Monkey logo

apf's Introduction

========================================================
#Level up!

This lesson is designed to take your coding skills to the next level.

Sounds fantastic, right? Watch this video to find out how.

<iframe src="http://fast.wistia.net/embed/iframe/hzui3mtmb3?seo=false" title="Wistia video player" allowtransparency="true" frameborder="0" scrolling="no" class="wistia_embed" name="wistia_embed" allowfullscreen mozallowfullscreen webkitallowfullscreen oallowfullscreen msallowfullscreen width="640" height="360"></iframe>

So by the end of this lesson, you will come away with working knowledge of Algorithms, Data Structures, and Abstract Data Types. This is generally referred to in the computer science world as "Data structures and algorithms", or DSA. You'll also hear it as "computer science fundamentals" (CSF) or "advanced programming fundamentals" (APF).

Why are we learning this?

Before we go any further, let's talk about why this is important.

Interview Preparation

Much of the motivation for the material in this lesson is to prepare you for interviews. While it is true that for the most part, computer science topics don't apply in day-to-day programming (or rather - unless you're a senior level!), data structures & algorithms questions come up very frequently during interviews for software development jobs.

Programming Completeness

This section also makes you into a more complete programmer. Studying this lesson will give you a deeper understanding as to how systems work under the hood and insight into the thought behind their design. The subjects in this lesson are what distinguishes a developer from an engineer.

Improved Problem Solving

As a programmer, you will inevitably encounter situations that will require you to solve unique problems. This lesson will equip you with tools that aid in solving some of the trickier programming problems you will encounter.


What to expect

Abstract thought

Much of the content in this lesson will seem very abstract, and, for the most part, it is. One of the concepts is "abstract data types," after all! But "abstract" doesn't mean it "not useful;" before you can really understand the specific kinds of cars, you have to know what the general idea of a car is, right? That's what we're here for - the computer science versions of both an abstract car and specific types of cars.

Simple explanations

Where possible, we adhere to the simplest possible explanation that still captures the concept. We aren't going to start with a front wheel drive mini with a manual transmission, seat specific variable temperature control, and blind spot detection - we'll start with a car.

Challenge

Many of the concepts in this lesson will be challenging to understand. In fact, you will probably have to read through certain sections multiple times before you understand it. This stuff is hard; rereading it is perfectly normal.

Specification vs Implementation in the Space Race

There's an old joke (spoiler: it isn't true). It goes, when the Russians and the Americans were racing for space, each country realized astronauts needed some way to write in zero-gravity. NASA spent millions of dollars researching and developing a pressurized pen that could write upside down and in zero-gravity. The Russians, however... brought a pencil.

The specification called for "something that will allow astronauts to write in space." Two implementations appeared: the pen and the pencil. As ridiculous as the joke is, let's consider the advantages of bringing a pen or pencil.

  • The pencil is erasable.
  • The pen can't be erased.
  • A pencil is cheap
  • A pressurized pen is definitely not cheap
  • The pencil requires sharpening.
  • Pens need ink to somehow work in zero gravity

So - what's the best option? It depends on what's happening on the space mission! The pencil seems like an easy choice because it's so cheap, but maybe the fact that it requires sharpening would make it a bad choice (where would the shavings go?).

Here, you're going to learn some basics on deciding, in your program, whether to use a pen or a pencil.

apf's People

Contributors

primaulia avatar

Watchers

Shimei avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.