CS101 - это вводный курс Стэнфордского университета в компьютерные науки для аудитории с нулевым опытом, проводимый профессором Ником Парланте и доступный любому желающему в Интернете.

Я оставил работу, чтобы сделать карьеру в ИТ-индустрии, и я пошел на этот курс, чтобы начать то же самое после рекомендации моего наставника Айшварии. Я стремлюсь стать специалистом по данным и подумал, что лучше начать с основ. У меня было так много вопросов, касающихся фундаментальной работы компьютеров, и CS101 оправдал все мои ожидания, отвечая на эти вопросы очень просто.

Обзор

Это онлайн-курс для самостоятельного изучения, который рассчитан на 6 недель, и обучает основным идеям информатики для аудитории с нулевым опытом. Используя короткие фрагменты «компьютерного кода», написанные в варианте «Javascript», он учит основным понятиям о силе и ограничениях компьютеров. Он охватывает все основные темы, связанные с компьютером, например

  • Компьютер: как это работает?
  • Схема RGB и коды изображений
  • Таблицы и коды таблиц
  • Таблицы и цифровые медиа
  • Память, сеть и сигналы
  • Компьютерное оборудование, программное обеспечение и безопасность.

Они довольно простые, это то, что я искал.

Что я узнал?

НЕДЕЛЯ 1 :

Основное уравнение: компьютер = мощный + глупый

Компьютер - это не волшебный ящик, а понятная машина. Он мощный, потому что он может выполнять миллиарды операций в секунду и просматривать массивы данных, но он также глуп, поскольку ему не хватает чего-то, что мы называемые «проницательностью» или «пониманием» и нуждаются в том, чтобы люди объяснили им, как работать. Компьютер управляется очень простыми и механическими инструкциями, например сложите 2 числа. Компьютер выполняет или выполняет инструкции, одну за другой, сверху вниз чисто механическим способом.

Хотя компьютер выполняет такие простые инструкции механически, он предлагает замечательную функцию, такую ​​как аудио и видео, потому что компьютерные программисты разрабатывают алгоритмы для достижения этих функций. Под алгоритмом понимаются шаги по выполнению определенной задачи. Далее разбивая его на инструкции, они пишут код для компьютера.

Код: язык компьютера

Код - это язык, понятный компьютеру. Код состоит из инструкций для компьютера, которые похожи на кирпичи, простые по отдельности, но в сочетании друг с другом дают отличные комбинации. Кроме того, компьютер знает значение очень небольшого числа слов и может использоваться только в коде.

Синтаксис: проявление компьютерной глупости

Код не может быть написан в свободной форме, и при написании кода мы должны соблюдать некоторые грамматические правила, называемые синтаксисом. Это текст кода, структурированный для компьютера. Синтаксис кода очень ограничен и строг, и его нарушение приводит к ошибке или компьютер просто не понимает инструкции. Строгий синтаксис кода - это отражение внутренней, механической / тупой природы компьютера.

Пиксель и мегапиксель

Если мы увеличим цифровое изображение в 10 раз, мы увидим, что изображение на экране компьютера состоит из маленьких квадратов, называемых пикселями. Пиксель - это небольшой квадрат одного цвета. Качество изображения измеряется в мегапикселях, что означает 1 миллион пикселей. Если у вас есть изображение длиной 800 пикселей и шириной 600 пикселей, то его качество будет 800 * 600 = 480000 пикселей, что составляет примерно 0,5 МП. Существует система координат x-y, позволяющая однозначно идентифицировать каждый пиксель. Например: пиксель в верхнем левом углу имеет x = 0 и y = 0, поэтому это пиксель (0,0) или просто (0,0)

Красный-зеленый-синий (схема RGB)

Мы используем схему Красный-Сине-Зеленый (RGB), где мы смешиваем свет этих трех цветов в разной пропорции, чтобы любой цвет был представлен пикселем (вспомните эксперимент с призмой Ньютона со школьных времен). Интенсивность каждого цвета представлена ​​числом от 0 до 255, где 0 означает нулевой свет, а 255 означает максимальный свет. Итак, если мы хотим сделать пиксель (2,0) темно-желтым, тогда мы установим красный на 255, зеленый на 255 и синий на 0 или (255,255,0) для этого пикселя (2,0).

Неделя 2

CS101 использует вариант Javascript для написания небольших фрагментов кода. Код Javascript можно запустить в любом браузере.

Привет, мир! : Первый код

Мы используем функцию print () для отображения чего-либо на экране компьютера. Все, что написано в скобках, отображается на экране. Мы можем отображать число или строку на экране компьютера. Строка - это последовательность символов или букв, которая должна быть заключена в кавычки. Каждый оператор в коде должен заканчиваться точкой с запятой (;). Если у нас есть два или более чисел или строк в скобках, они должны быть разделены запятой (,).

Следующее изображение показывает код слева, а его вывод отображается справа, когда мы запускаем или выполняем код. Выполнить выполняет каждую строку кода один раз, сверху вниз.

Переменная

Переменная - это имя, присвоенное ячейке памяти в памяти компьютера. «Переменная» похожа на поле, в котором хранится значение. Например: x = 7; Using = таким образом называется «присвоение переменной». Это сохраняет значение 7 в переменной (т. Е. В поле) x. Теперь, где бы мы ни использовали x в коде, компьютер будет использовать сохраненное в нем значение. Переменная может содержать любой тип значения, например число, строку, изображение или любой другой файл.

В следующем примере мы создали переменную x и присвоили ей разные значения, которые были напечатаны функцией print ().

Коды изображений

Как мы знаем, каждое изображение имеет пиксели, и мы можем изменить цвет пикселей, изменив значения RGB (R, G, B) для определенного пикселя (x, y). Коды изображений - это код, созданный для манипулирования изображениями или выполнения других операций с ними.

В следующем коде мы используем функцию new SimpleImage () для загрузки изображения «flower.jpg» в переменное изображение. Затем мы печатаем изображение с помощью функции print ().

Изображение для цикла ()

В программировании есть концепция цикла, которую мы используем для повторения некоторого фрагмента кода несколько раз. Цикл For () берет несколько строк нашего кода и запускает эти строки снова и снова, по одному разу для каждого пикселя изображения. Это называется массовая операция. Кроме того, мы используем функции pixel.setRed (), pixel.setGreen () и pixel.setBlue () для установки значения или интенсивности красного, зеленого и синего света для данного пикселя.

В следующем коде, для цикла посещений, каждый пиксель изображения и устанавливает значение для красного, зеленого на 255 и синего цвета на 0, и, таким образом, изображение становится желтым, так как каждый пиксель в изображении стал желтым.

Изображение в оттенках серого.

Когда интенсивность всех трех цветных огней одинакова, цвет пикселя становится серым. В следующем коде мы использовали функцию pixel.getRed () для получения текущих значений красного цвета и соответствующую функцию для других двух цветов для данного пикселя, а затем мы вычисляем среднюю интенсивность света этого пикселя и устанавливаем для всех трех цветов значение средней интенсивности, чтобы изображение выглядело серым. Это называется изображение в оттенках серого.

Логика изображения

Структура if () предоставляет возможность написать тест «истина / ложь», чтобы контролировать, выполняется ли часть кода или нет. В сочетании с циклом оператор if значительно расширяет возможности кода. Проверяемое условие записывается в скобках, а код записывается после условия проверки в фигурных скобках {}. Компьютер проверяет условие в круглых скобках, если оно истинно, затем выполняет код в фигурных скобках, в противном случае код пропускает. Используя оператор if, мы можем выполнять операцию с определенными пикселями изображения.

В следующем коде мы установили значение для красного и зеленого света на 0 и синего на 255 только для тех пикселей, у которых значение зеленого меньше 140. Вы можете заметить, что зеленые страницы листьев стали синими.

3 неделя

Биты, байты и память

Люди используют десятичную систему счисления, в которой у нас есть 10 цифр от 0 до 9, каждая из которых представляет определенное количество вещей. Компьютер знает только два состояния, которые представлены 0 и 1 (Почему? Наблюдайте за этим.) Компьютер разбивает все на 0 и 1, и эта система, в которой основа системы - 2, называется Binay System. Наименьшая единица измерения в памяти компьютера называется битом и может хранить только 1 цифру, т.е. 2¹ = 2 значения, либо 0, либо 1. Группа из 8 бит называется байтом, и в ней может храниться 2⁸ = 256. значения от 0 до 255 (причина, по которой у нас есть значения от 0 до 255 для цветов в схеме RGB). Ниже приведены более крупные единицы компьютерной памяти.

Компьютерное оборудование

«Оборудование» относится к физическим частям компьютера, а «программное обеспечение» относится к коду, который выполняется на компьютере. Например, пианино похоже на оборудование, тогда как музыка на пианино - это программное обеспечение.

  • Транзистор
    Это электронное устройство, контролирующее прохождение электрического тока, чаще всего используемое в качестве усилителя или переключателя. Это основной строительный блок, используемый для создания более сложных электронных компонентов. В частности, бит может быть построен на 5 транзисторах. (Как? Нажмите здесь). На смену электронным лампам пришли транзисторы. Микроскопические транзисторы вытравлены на кремниевых чипах размером с ноготь. Чипы могут содержать миллиарды транзисторов. например Микросхемы ЦП, микросхемы памяти, микросхемы флэш-памяти

  • Закон Мура
    Закон Мура гласит, что плотность транзисторов на кристалле удваивается примерно каждые 2 года (иногда указывается каждые 18 месяцев)
    . Это не научный закон, это просто общее предсказание, которое, кажется, продолжает работать. В более широком смысле это говорит о том, что при одинаковых затратах компьютер становится все более и более функциональным или эффективным, или это может означать, что при тех же возможностях компьютеры становятся все дешевле и дешевле ... появляются во все большем и большем количестве мест по мере того, как это становится рентабельным (например, в вашем автомобиле, термостате и т. д.).
  • Центральный процессор (ЦП)
    ЦП называется «мозгом» компьютеров. ЦП выполняет активный «запуск» кода, манипулируя данными, в то время как другие компоненты выполняют более пассивную роль, такую ​​как хранение данных. Когда мы говорим, что компьютер может «складывать два числа миллиард раз в секунду» ... это процессор. Когда вы нажимаете кнопку «Выполнить», ЦП в конечном итоге «запускает» ваш код.

  • RAM (временная память)
    RAM означает оперативную память. ОЗУ - это рабочая память, которую компьютер использует для хранения кода и данных, которые активно используются. RAM - это фактически область хранения байтов под управлением ЦП. RAM относительно быстра, способна получить значение любого конкретного байта за несколько наносекунд (1 наносекунда - это 1 миллиардная секунды). Другой важной особенностью ОЗУ является то, что она сохраняет свое состояние только до тех пор, пока на нее подается питание, и теряет все данные, как только подача питания прекращается, то есть это энергозависимая память.
  • Постоянное хранилище (жесткий диск)
    Постоянное хранилище - долгосрочное хранилище байтов в виде файлов и папок
    . Постоянное означает, что байты сохраняются даже при отключении питания. Портативный компьютер может использовать вращающийся жесткий диск (HDD), также известный как «жесткий диск», для постоянного хранения файлов. Или он может использовать «флеш-накопитель», также известный как твердотельный диск - SSD, для хранения байтов на флеш-чипах. жесткий диск считывает и записывает магнитные узоры на вращающийся металлический диск для хранения байтов, в то время как флэш-память «твердотельная» не имеет движущихся частей, только кремниевые чипы с крошечными группами электронов. для хранения байтов. В любом случае хранилище является постоянным в том смысле, что оно сохраняет свое состояние даже при отключении питания.

4 неделя

Компьютерное программное обеспечение

«Программное обеспечение» - это код, который запускается на оборудовании. Если аппаратное обеспечение - это пианино, тогда программное обеспечение - это музыка, которая воспроизводится на нем. Код также называют «программой». Вы запускаете программное обеспечение на своем компьютере для решения конкретной проблемы или управления информацией. Мы знаем, что компьютер понимает только язык нулей и единиц, который также называется машинным языком. Код, написанный на машинном языке, называется Машинный код, и его имя заканчивается на расширение .exe («.exe» - это соглашение Windows, обозначающее файл как программу. ). Поэтому, когда мы говорим «программное обеспечение», на самом деле это исполняемый на компьютере файл .exe.

Машинный код определяет набор отдельных инструкций. Каждая инструкция машинного кода чрезвычайно примитивна, например, сложение двух чисел или проверка, равно ли число нулю. При сохранении каждая инструкция занимает всего несколько байтов. Когда мы говорили ранее, что ЦП может выполнять 2 миллиарда операций в секунду, «операции» здесь относятся к этим простым инструкциям машинного кода.

В нашем постоянном хранилище программа хранится как файл .exe. Когда мы дважды щелкаем по программе, операционная система «запускает» программу, выделяет область памяти в ОЗУ для программы, загружает первую часть машинного кода программы в эту память и, наконец, дает ЦП команду начать выполнение этого кода. . Оперативная память находится под управлением ЦП.

ЦП выполняет «цикл выборки / выполнения».

  • получить одну инструкцию последовательно
  • выполнить (запустить) эту инструкцию, например сделать добавление
  • получить следующую инструкцию и так до последней инструкции.

Операционная система (ОС)

«Операционная система» компьютера похожа на первую управляющую программу, которая запускается, когда компьютер впервые запускается («загружается»). Операционная система похожа на диспетчер компьютера, который управляет всеми ресурсами и контролирует все программы, запущенные на компьютере. В операционной системе все организовано в фоновом режиме, так что несколько программ могут работать одновременно, что известно как «многозадачность». Операционная система предоставляет каждой программе свою собственную область памяти, поэтому каждая программа имеет доступ только к своим собственным ресурсам.

Языки программирования.

Мы знаем, что ЦП может выполнять только инструкции машинного кода, записанные в виде нулей и единиц, но программистам очень сложно писать машинные коды. Следовательно, программисты пишут код на компьютерном языке «высокого уровня», который им легко понять и имеет такие функции, как оператор for loop if и т. Д. Такая программа, написанная на языке программирования высокого уровня, называется Исходный код, который затем преобразуется в машинный код.

  • Скомпилированные языки
    Существует группа языков программирования, включая C, C ++, которые используют компилятор для преобразования исходного кода в машинный код. Компилятор - это зависящее от языка программное обеспечение, которое считывает исходный код, переводит и расширяет его до большей последовательности инструкций машинного кода для реализации последовательности действий, указанной в исходном коде. Здесь управление памятью частично осуществляется вручную, т.е. со стороны программиста требуется некоторый ввод, но скомпилированный код работает быстрее.

    Компилятор переводит весь исходный код в эквивалентный машинный код.
    , который будет запущен позже, это массовый перевод. Например: оператор if может быть реализован последовательностью из 5 инструкций машинного кода, затем оператор if компилятора в 5 инструкций машинного кода. Компилятор создает файл .exe после компиляции, который может быть распределен и запускаться независимо без исходного кода или компилятора по прошествии любого времени после компиляции. Обычно невозможно сгенерировать исходный код из файла .exe.

  • Интерпретируемые (динамические) языки
    Существует еще одна группа языков, например Python, Javascript, в которой вместо компилятора используется интерпретатор. Интерпретатор просматривает каждую строку кода, переводит и запускает ее в данный момент, а затем переходит к следующей строке исходного кода. Интерпретатор не создает EXE-файл, вместо этого он выполняет действия, указанные в исходном коде, напрямую.
    В интерпретируемых языках управление памятью выполняется автоматически и он предлагает больше возможностей, чем скомпилированные языки, но интерпретируемый код работает медленнее, чем скомпилированный код.

Компьютерная сеть

Компьютеры связаны друг с другом через компьютерную сеть. Компьютерная сеть похожа на телефонную систему для компьютеров, обмен данными - это как звонок. LAN (локальная вычислительная сеть) - это технология, объединяющая 2–50 компьютеров в доме или на одном этаже здания. Проводная локальная сеть называется Ethernet, а беспроводная локальная сеть называется Wi-Fi.

  • Ethernet
    Ethernet использует коаксиальный кабель для соединения компьютеров в локальной сети друг с другом. Провод часто бывает синего или желтого цвета, а его длина не превышает 100 м. Один конец кабеля Ethernet подключается к компьютеру, а другой конец - к устройству, называемому маршрутизатором, который подключает Ethernet к более крупной сети, называемой Интернетом. Кабель Ethernet использует разъем RJ45 для подключения к компьютеру или маршрутизатору.
    Wi-Fi аналогичен Ethernet, за исключением того, что среда подключения - воздух, а не кабель.

  • Интернет
    Ethernet или локальная сеть ограничены домом или зданием, но Интернет - это всемирная сеть. У каждого компьютера и маршрутизатора есть уникальный адрес, называемый IP-адресом, который используется Интернетом для отправки данных. Интернет - это сеть маршрутизаторов по всему миру, и каждый компьютер подключен к какому-либо маршрутизатору.

    Самый распространенный способ для компьютера быть «в Интернете» - это установить соединение с «маршрутизатором». », Который уже есть в Интернете. Компьютер устанавливает соединение, например, через Ethernet для передачи данных с маршрутизатором. Маршрутизатор находится «перед компьютером», соединяя компьютер со всем Интернетом. Данные распределяются скачкообразно от одного маршрутизатора к другому маршрутизатору и, наконец, к месту назначения. Каждому маршрутизатору не нужно знать весь путь, а только правильного соседа, которому необходимо передать данные.

Неделя 5

Табличные данные

Табличные данные - это распространенный способ организации строк, чисел, дат в прямоугольную структуру таблицы. Таблица состоит из строк и полей. Количество полей всегда будет небольшим (категории), но количество строк может составлять миллионы или миллиарды. На приведенном выше рисунке файл baby-2010.csv содержит имена 1000 самых популярных имен мальчиков и девочек, всего 2000 имен, организованных в виде «таблицы». Здесь имя, ранг, пол и год являются полями, а строки с именами Джейкоб, Изабелла и т. Д. Содержат данные о младенцах, родившихся в 2010 году. Прямоугольный формат таблицы очень распространен, и «Базы данных» являются расширением этой основной идеи таблицы.

Коды таблиц

Код, работающий с таблицами, похож на коды изображений, которые мы видели ранее. Напомним, у нас был for (pixel: image) для изображений, аналогично у нас есть for (row: table), который будет посещать каждую строку в таблице и выполнять операцию, записанную в фигурные скобки {} . print (row) распечатает строки таблицы. Кроме того, мы использовали функцию new SimpleTable () для загрузки файла таблицы «baby-2010.csv» в переменную table.

Следующий код печатает все строки файла таблицы.

Мы используем row.getField (field_name), чтобы выбрать поле из строки. В нашем файле есть имена полей: имя, ранг, пол, год. Мы используем оператор (==), чтобы проверить, равны ли два выражения на его обеих сторонах или нет, он отличается от оператора присваивания, который присваивает значение на его правой стороне переменной или выражению ее LHS. Следуя коду, мы напечатаем все строки, в которых есть «Алиса» из поля «Имя».

  • startWith ()

Функция startWith () при использовании с функцией getField () проверяет, начинаются ли данные в данном поле с буквы, указанной в скобках (). Следующий код проверит и распечатает все имена из поля «name», начинающиеся с «Ab».

  • EndWith ()

Точно так же функция endWith () проверит все данные в данном поле, оканчивающиеся буквами, написанными в круглых скобках. Следующий код проверит и распечатает все имена из поля «name», оканчивающегося на «ly».

Логическая логика

Логическая логика представляет собой тесты, которые используются для объединения двух операторов. Мы можем использовать оператор AND (&&), представленный двумя символами амперсанда, когда мы хотим выполнить код, только когда оба заданных условия удовлетворены.

В следующем коде мы использовали оператор AND (&&) для печати имен, начинающихся с «B» и заканчивающихся «a».

Мы можем использовать оператор ИЛИ (||), представленный двумя полосами, когда мы хотим выполнить код, даже если выполняется одно из двух или оба указанных условия.

В следующем коде мы использовали оператор OR (||) для печати имен, начинающихся с «X» или «Y».

Неделя 6

Таблицы

Электронная таблица - это файл, состоящий из ячеек в строках и столбцах, который помогает упорядочивать, вычислять и сортировать данные. Данные в электронной таблице могут быть числовыми значениями, а также текстом, формулами, ссылками и функциями. Одним из самых популярных примеров электронных таблиц является Microsoft Excel. Столбцы в электронных таблицах имеют имена A, B, C, D…, а строки - 1, 2, 3, 4…. Таким образом, каждая ячейка в электронной таблице имеет уникальный адрес.

Кроме того, в электронных таблицах есть такие функции, как СУММ, СРЕДНЕЕ и т. Д., Что делает наши математические вычисления простыми и быстрыми. Кроме того, у нас есть варианты представления наших данных в виде графиков, диаграмм, древовидных диаграмм и т. Д.

Компьютерная безопасность

Наш компьютер похож на замок, и наши данные хранятся внутри него. Плохой парень не может просто получить доступ к файлам (на самом деле байтам), хранящимся внутри компьютера, по своему желанию. Плохой парень захочет, и ему нужно будет поработать над этим. Как правило, плохой парень не создает атаки специально для вас. Они посылают миллионы довольно грубых атак, просто заманивая в ловушку самых неуклюжих жертв. Ниже приведены три распространенных типа атак на нашу компьютерную безопасность.

  1. Атаки на пароли
    Злоумышленник может попытаться угадать ваш пароль на сайте и будет пытаться войти в систему снова и снова. Это работает, если пароль общий, например «Пароль» «пароль123». Это также известно как «атака по словарю», когда он пробует все слова в словаре. В большинстве случаев это не удается, но успех здесь и там с учетной записью с плохим паролем достаточно хорош для плохих парней.

    Так что, чтобы защититься от такой атаки,
    ★ не следует выбирать такой пароль, который выбрали тысячи других.
    ★ Хороший пароль - это комбинация строчных и прописных букв, специальных символов, цифр и орфографических ошибок.
    ★ В случае взлома самого сайта, поэтому плохой парень может таким образом получить ваш пароль? Поэтому не используйте повторно свои пароли на важных сайтах, таких как банки.
    ★ Также следует подумать о том, чтобы записать важные пароли на листке бумаги дома. Иначе сложно держать все это прямо в голове.
  2. Фишинговые атаки
    При фишинговой атаке злоумышленник обманом заставляет вас раскрыть ваш пароль или любую другую информацию, которая ему нужна. Мы получаем так много электронных писем или ссылок на названия сайтов электронной коммерции или банков, и в электронном письме может содержаться нечто провокационное - предупреждение о мошенничестве, нажмите немедленно, и если мы щелкнем по нему, мы будем перенаправлены на альтернативный фишинговый веб-сайт, который имитирует реальный сайт. Когда мы вводим пароль для любого из них, он переходит к злоумышленнику. Плохие парни рассылают электронные письма или иным образом распространяют URL-адрес фишингового сайта. Плохим парням нужны пароли для сайтов, связанных с деньгами.

    Чтобы защитить наш компьютер от вредоносных атак,
    ★ Не доверяйте URL-адресам в электронных письмах или случайных сайтах, особенно когда ведет на страницу входа в систему
    ★ Внимательно изучите URL-адрес, отображаемый в вашем браузере или почтовой программе. Он будет не совсем похож на исходный сайт.
    ★ Лучше всего ввести URL-адрес самостоятельно - если он заявлен, что он был получен с eBay, введите www.ebay.com самостоятельно в своем браузере.
    ★ Найдите в URL-адресе https, где s означает безопасность.
  3. Атаки вредоносных программ
    Это большая категория, когда злоумышленники обманом заставляют нас запускать на нашем компьютере вредоносные программы (вредоносные программы, включая червей, вирусы, трояны и т. д.). Если плохой парень заставит вас запустить код, созданный плохим парнем, на вашем компьютере, компьютер будет скомпрометирован, а плохой парень победит. Код может выполнять действия, управлять вашим компьютером, стирать или передавать данные и т. Д.

    Чтобы защитить наш компьютер от вредоносных атак,
    ★ Не запускайте программы из случайных источников (сначала погуглите, посмотрите, что говорят люди)
    ★ Ваше веб-программное обеспечение, такое как браузеры, уязвимо для таких атак, обновляйте их до последних версий.

Заключение

Этот курс был прекрасным путешествием, в котором я узнал так много вещей, о которых я никогда раньше не знал. Я посоветую пройти этот курс всем, кто хочет сделать карьеру в области компьютерных наук. Большое спасибо за терпеливое чтение. Оставьте комментарий ниже, если у вас есть вопросы, я буду рад на них ответить. Вы можете связаться со мной в LinkedIn или посетив мой сайт в Medium. Удачного обучения.