Language Fundamentals [LF]

Introduction

Both Full Stack Web and iOS fellows gain a solid grounding in the fundamentals of programming in JavaScript or Swift respectively. There is an emphasis on a conceptual understanding of these key topics, rather than just syntactical learning. Fellows should be able to generalize these fundamentals to make new language acquisition seamless.


Native Data Types

LF.1 Understand and differentiate among types of data, including selecting the correct type for the task, type casting where necessary, and applying the correct methods and operators for the type. Apply methods and other operations based on appropriate data type to produce desired outcomes.

Web
  • Numbers
  • Strings
  • Booleans
  • Objects

Know the truthy and falsey conditions for each data type.

iOS
  • Ints
  • Doubles
  • Floats
  • Strings
    • Understand what Unicode is and how to print and manipulate Unicode Characters
  • Bools

LF.1.a Understand that data types are the foundation of all code, different ways of storing information drastically changes the way you approach code, example: Int 1 compared to String "1", and native data types are in every language.

Variables

LF.2 Understand that a variable/constant is a reference to a value stored in memory. Know how to declare and assign variables and constants. Understand the differences and appropriate use cases for variables vs constant.


Data Structures

LF.3 Understand that data structures are ways of storing multiple elements of associated data. Access individual elements within sets of information, either directly, by iteration, or using methods.

LF.3.a Arrays: Understand the Array data structure. Know that Arrays stores values of the same type in an ordered list. Understand the following:

  • Access and modify arrays
  • Iterate through arrays
  • Use common array methods

LF.3.b Sets: Understand the difference between and Array and Set. Sets stores distinct values of the same type in a collection with no defined ordering. A Set also ensures that an item is unique in the Set.

LF.3.c Dictionaries/Maps: Able to declare and use Dictionaries. Understand common uses of Dictionaries. Contrast and compare Dictionaries with Arrays. Understand that a dictionary stores associations between keys of the same type and values of the same type in a collections with no defining ordering.


Control Flow

LF.4 Understand that code runs from top to bottom unless control flow is utilized. Understand the logic of control flow including if/else, switch/case, comparison operators, and loops. Navigate intermediate to complex control flow structures to produce desired outcomes for particular inputs.

Web
  • for
  • for/in
  • while
  • do while
iOS
  • for-in
  • while
  • repeat-while

Functions

LF.5 Understand how functions enable us to call a block of reusable code. Utilize functions effectively to recycle functionalities across modules and keep code DRY.

LF.5.a Define and call functions. Understand the components of a function signature including definition vs. invocation, terminology - e.g. 'argument'.

LF.5.b Understand that functions retain the scope at which they are declared.


Closures

LF.6 Understand the purpose of using closures. Solve problems by using functions that take a closure as an argument. Recognize that a function is a type of closure. Understand closure syntax.

LF.6.a Understand that closures can capture and store references to any constants and variables from the context in which they are defined.