Гарвардский курс CS50 на русском: седьмая лекция

Всем привет! Мы продолжаем публиковать лекции легендарного Гарвардского курса CS50, которые мы переводим и озвучиваем специально для JavaRush.


Рады вам представить 7-ю серию, это первая лекция третьей недели, до этого мы публиковали 0-ю, 1-ю, 2-ю недели. Всего в курсе 24 лекции, постепенно мы переведем все.


1-я лекция: http://pikabu.ru/story/osnovyi_programmirovaniya_lektsiya_0_...

2-я лекция: http://pikabu.ru/story/garvardskiy_kurs_cs50_na_russkom_vtor...

3-я лекция: http://pikabu.ru/story/garvardskiy_kurs_cs50_na_russkom_tret...

4-я лекция: http://pikabu.ru/story/garvardskiy_kurs_cs50_na_russkom_chet...

5-я лекция: http://pikabu.ru/story/garvardskiy_kurs_cs50_na_russkom_pyat...

6-я лекция: http://pikabu.ru/story/garvardskiy_kurs_cs50_na_russkom_shes...


А теперь подробнее о CS50


На кого рассчитан


Если вы — новичок, пройдите CS50. Если кто-то из ваших знакомых приглядывается к ИТ и программированию, советуйте CS50 не глядя. Я серьезно.


CS50 подойдет любому человеку, кто решил стать «айтишником». Пожалуй, его можно рекомендовать и способным 12-летним, и умудренным опытом «перебежчикам» из других профессий. Идеально — старшеклассникам и студентам.


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


Что изучают на CS50


— Основы компьютерных наук и программирования. Системы счисления, работа с командной строкой в Linux, циклы, условные переходы и прочие радости.


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


— Концепции абстракции, структуры данных, инкапсуляции, управления памятью. Основы компьютерной безопасности. Процесс разработки ПО и веб-разработка.


— Основы языка программирования C и визуального языка Scratch. Собственно, все основные примеры и задания студенты делают на языке C.


— Основы баз данных и SQL.


— Веб-разработка: основы CSS, HTML, JavaScript и PHP. Естественно, только самые азы.


— Основы подготовки презентации проектов по программированию.


Поддержите нас плюсом и подписывайтесь на нас и сообщество «Наука».  

Наука | Научпоп

7.7K пост78.5K подписчиков

Добавить пост

Правила сообщества

Основные условия публикации

- Посты должны иметь отношение к науке, актуальным открытиям или жизни научного сообщества и содержать ссылки на авторитетный источник.

- Посты должны по возможности избегать кликбейта и броских фраз, вводящих в заблуждение.

- Научные статьи должны сопровождаться описанием исследования, доступным на популярном уровне. Слишком профессиональный материал может быть отклонён.

- Видеоматериалы должны иметь описание.

- Названия должны отражать суть исследования.

- Если пост содержит материал, оригинал которого написан или снят на иностранном языке, русская версия должна содержать все основные положения.


Не принимаются к публикации

- Точные или урезанные копии журнальных и газетных статей. Посты о последних достижениях науки должны содержать ваш разъясняющий комментарий или представлять обзоры нескольких статей.

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

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


Наказывается баном

- Оскорбления, выраженные лично пользователю или категории пользователей.

- Попытки использовать сообщество для рекламы.

- Фальсификация фактов.

- Многократные попытки публикации материалов, не удовлетворяющих правилам.

- Троллинг, флейм.

- Нарушение правил сайта в целом.


Окончательное решение по соответствию поста или комментария правилам принимается модерацией сообщества. Просьбы о разбане и жалобы на модерацию принимает администратор сообщества. Жалобы на администратора принимает @SupportComunity и общество Пикабу.

7
Автор поста оценил этот комментарий

А если брать случайное число из массива и сравнивать с ним все остальные числа?
Тот же ряд "4" "2" "6" "8" "1" "3" "7" "5" и, например, берём "6":
1) "4" сравниваем с "6" -> кидаем левее. _____4____6________
2) "2" сравниваем с "6" -> кидаем левее. _____4__2_6________
3) "2" сравниваем с "4" -> кидаем левее. ___2_4____6________
4) "8" сравниваем с "6" -> кидаем правее. ___2_4___6___8_____
5) "1" сравниваем с "6" -> кидаем левее. ____2_4_1_6___8_____
6) "1" сравниваем с "4" -> кидаем левее. ____214___6___8_____
7) "1" сравниваем с "2" -> кидаем левее. _1__2_4___6___8_____
8) "3" сравниваем с "6" -> кидаем левее. _1__2_4_3_6___8_____
9) "3" сравниваем с "4" -> кидаем левее. _1__234___6___8_____
10)"3" сравниваем с "2" -> кидаем правее._1__234___6___8_____
11)"7" сравниваем с "6" -> кидаем правее._1__234___6_7_8_____
12)"7"сравниваем с "8" -> кидаем левее.___1__234___6_7_8_____
13)"5" сравниваем с "6" -> кидаем левее.__1__234_5_6_7_8_____
14)"5" сравниваем с "4" -> кидаем правее._1__234_5_6_7_8_____
При самом плохом раскладе, мы случайно выберем последний элемент("8"), затем первым числом сравнения станет "1" и дальше числа будут идти по убыванию.(8-1-7-6-5-4-3-2), мы уложимся в 28 действий, что заметно меньше, чем n^2/2 - n/2.
Хотя грубо говоря, это создание нового массива, где между каждым числами должно быть N ячеек(чтобы не сдвигать числа), что довольно таки громоздко.

раскрыть ветку
12
Автор поста оценил этот комментарий

23, а потом 42

24
Автор поста оценил этот комментарий

сохранил пост. Изучать я конечно не буду.

Иллюстрация к комментарию
7
Автор поста оценил этот комментарий
О боже, эти числа.
раскрыть ветку
1
Автор поста оценил этот комментарий

Как присоединиться к курсу и получить доступ ко всему:



1. Зарегистрироваться на сайте www.edx.org


кнопка Register->заполняем поля->кнопка Create your account (логин/пароль запоминаем)-> Explorer courses -> в поиски вводим "cs50" и выбираем "Introduction to Computer Science Harvardx - cs50x"->кнопка Enroll now->кнопка Audit This Course->кнопка View Course. Ну, наконец-то!


2. После регистрации и выбора курса CS50 нас, наконец-то, пустили на сайт. Здесь всё на английском.


Нажимаем вкладку "Course". Слева перечень недель, в каждой недели 2 лекции и задачник. Задачник называется Problem Set. Состоит из двух файлов HTML - стандартный и для продвинутых (для хакеров). Если нажать на HTML будет много поясняющего текста и видео, ну и задачи под конец.


3. Позже на почту придет письмо Activate Your edX Account нужно пройти по первой ссылке, чтобы активировать аккаунт.


Problem Set 'ы частично переведены на русский на сайте http://info.javarush.ru


Список переведенных задачников:


Problem Set 0


http://info.javarush.ru/news/2016/06/27/%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B-%D0%BA-%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D1%8F%D0%BC-CS50-%D0%9D%D0%B5%D0%B4%D0%B5%D0%BB%D1%8F-0-%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D0%B8-1-%D0%B8-2-.html


Problem Set 1 http://info.javarush.ru/javarush_articles/2016/07/18/%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B-%D0%BA-%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D1%8F%D0%BC-CS50-Week-1-%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D0%B8-3-%D0%B8-4-.html


Problem Set 2


http://info.javarush.ru/javarush_articles/2016/08/05/%D0%93%D0%B0%D1%80%D0%B2%D0%B0%D1%80%D0%B4-CS50-%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F-%D0%B2%D1%82%D0%BE%D1%80%D0%BE%D0%B9-%D0%BD%D0%B5%D0%B4%D0%B5%D0%BB%D0%B8-%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D0%B8-5-%D0%B8-6-.html


Problem Set 3


http://info.javarush.ru/javarush_articles/2016/09/06/%D0%93%D0%B0%D1%80%D0%B2%D0%B0%D1%80%D0%B4-CS50-%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F-%D1%82%D1%80%D0%B5%D1%82%D1%8C%D0%B5%D0%B9-%D0%BD%D0%B5%D0%B4%D0%B5%D0%BB%D0%B8-%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D0%B8-7-%D0%B8-8-%D1%87%D0%B0%D1%81%D1%82%D1%8C-1.html


и


http://info.javarush.ru/javarush_articles/2016/09/06/%D0%93%D0%B0%D1%80%D0%B2%D0%B0%D1%80%D0%B4-CS50-%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F-%D1%82%D1%80%D0%B5%D1%82%D1%8C%D0%B5%D0%B9-%D0%BD%D0%B5%D0%B4%D0%B5%D0%BB%D0%B8-%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D0%B8-7-%D0%B8-8-%D1%87%D0%B0%D1%81%D1%82%D1%8C-2.html


и ещё дополнительная информация:


http://info.javarush.ru/javarush_articles/2016/09/06/%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BC%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B-CS50-Week-3-%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D0%B8-7-%D0%B8-8-%D0%B0%D1%81%D0%B8%D0%BC%D0%BF%D1%82%D0%BE%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F-%D0%BD%D0%BE%D1%82%D0%B0%D1%86%D0%B8%D1%8F-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B-%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8-%D0%B8-%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0.html


Problem Set 4


http://info.javarush.ru/Masha/2016/10/11/%D0%93%D0%B0%D1%80%D0%B2%D0%B0%D1%80%D0%B4-CS50-%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F-%D1%87%D0%B5%D1%82%D0%B2%D0%B5%D1%80%D1%82%D0%BE%D0%B9-%D0%BD%D0%B5%D0%B4%D0%B5%D0%BB%D0%B8-%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D0%B8-9-%D0%B8-10-.html



4. Скрэтч


Можно играть в онлайн: https://scratch.mit.edu/projects/editor/?tip_bar=getStarted



5. Доступное описание функция языка С


Сайт: https://reference.cs50.net/cs50



6. Среда разработки, как на лекции (с командной строкой)


Сайт: cs50.io ->нажать Submit -> ввести логин/пароль, который мы вводили на www.edx.org -> кнопка Return to ID.CS50.NET -> подождать пока сформирует рабочее пространство и вуаля