Кто что думает по поводу cs 50 от Гарварда?
Заинтересовало обучение
Пример из науки - Лауреат Филдсовской премии ( аналог нобелевки для математиков ) Владимир Воеводский. Сменил несколько математических школ, поступил на мехмат МГУ ( отдельная история, как не комсомольца в 83 году туда взяли, если интересно расскажу ), в 89 году его отчислили на академическую неуспеваемость. В 90 году поступил в аспирантуру в Гарварде, куда он был прият без формального высшего образования.
Кратенько о нем можно почитать в вики ( https://ru.wikipedia.org/wiki/Воеводский,_Владимир_Александр... ).
Воеводский закончил три курса и отчислен с четвертого, причем в сумме из-за академов учился лет 5. В аспирантуру в США идут после бакалавриата, который как правило занимает 4 года, но нередко 3 и иногда даже меньше. Если профессора устраивал такой аспирант, скорее всего, убедить администрацию взять его в аспирантуру было нетрудно.
Если с формальной точки зрения, то во-первых, для поступления в американские аспирантуры высшее образование и не требуется, хотя почти всегда подразумевается.
Во-вторых, в СССР в принципе не было документов об образовании, соответствующем американскому бакалавриату. Справка о неоконченном высшем даётся уже после 2 курсов, а советский диплом соответствовал сразу американскому магистерскому.
По существу не только Воеводский, но и все его однокурсники, вылетевшие одновременно с ним, по образованию подходили в гарвардскую аспирантуру. Диплома же Гарвард не требовал в обязательном порядке ни с Воеводского, ни с прочих поступающих в аспирантуру.
Проблема тех, кто не является студентом Гарварда и хочет пройти вводный курс CS50, заключается в том, что у них нет доступа к директории с учебными программкам в облачной IDE, зато есть доступ к самой IDE со всеми прикрученными костылями-библиотеками. Приходится вручную переписывать код из видеолекции и молиться, чтобы эти программы завелись.
Также если вы смотрите старый курс (а большинство смотрит перевод курса 2015 года), то появляется ещё одна проблема - изменилось написание функций во встраиваемых библиотеках, поэтому простое списывание для большинства программ уже не проканает.
Вот и я дважды за неделю строчил посты с просьбами расшифровать тексты ошибок из терминала, потому что работать с ним не учат. По крайней мере, в первых лекциях. Спасибо тем, кто смог хотя бы донести, что в тексте ошибки зашифрована строка и номер символа по порядку, и можно найти и сравнить неверный кусок кода.
Вооружившись мануалом к университетским библиотекам (https://manual.cs50.io/), а также гуглом, я упоролся и восстановил все программы из этих лекций.
Helloworld.c
Обычно первое, что создаёт будущий прогер практически на любом языке. Первая-то она первая, но с её отладкой я помудохался знатно.
#include <stdio.h>
int main(void)
{
printf("Hello, world\n");
}
Далее вариации этой программы, которые Дэвид Малан сочинял на ходу, но не сохранял. Строковая переменная.
#include <cs50.h>
#include <stdio.h>
int main(void)
{
string s = "Hannah";
printf("Hello, world\n");
}
А эта программа заняла у меня больше всего времени. Заставляем переменную запрашивать имя самостоятельно через библиотечную функцию. 4 дня ушло на то, чтобы узнать, что в новой версии функции GetString() - get_string() - требуется вставить что-то в скобки, чтобы она заработала. Я ставлю кавычки, ибо они интуитивно понятны.
getname.c
#include <cs50.h>
#include <stdio.h>
int main(void)
{
string s = get_string("");
printf("Hello, %s\n", s);
}
После решения этого гиппопотамуса от мира ребусов работа пошла быстрее.
Далее лектор вернулся к сохранённым в каталоге курса программам и запустил простой калькулятор сложения целых чисел.
adder.c
#include <cs50.h>
#include <stdio.h>
int main(void)
{
// ask user for input
printf("give me an integer: ");
int x = get_int("");
printf("give me another integer: ");
int y = get_int("");
// do the math
printf("the sum of %i and %i is %i!\n", x, y, x + y);
}
Далее рассматривалась программа про условия. Я разделил её на две версии - багнутую версию (conditions-0b.c), которая не предусматривает ситуацию, когда переменная равна 0, и пофикшенную версию (conditions-0.c).
conditions-0b.c
#include <cs50.h>
#include <stdio.h>
int main(void)
{
// ask user for input
printf("I'd like an integer, please: ");
int n = get_int("");
//analyze user's input
if (n>0)
{
printf("You picked a positive number!\n");
}
else
{
printf("You picked a negative number!\n");
}
}
conditions-0.c
#include <cs50.h>
#include <stdio.h>
int main(void)
{
// ask user for input
printf("I'd like an integer, please: ");
int n = get_int("");
//analyze user's input
if (n>0)
{
printf("You picked a positive number!\n");
}
else if (n == 0)
{
printf("You picked zero!\n");
}
else
{
printf("You picked a negative number!\n");
}
}
Условия и операторы
nonswitch.c
#include <cs50.h>
#include <stdio.h>
int main(void)
{
//ask user for an integer
printf("Give me an integer between 1 and 10: \n");
int n = get_int("");
//judje user's input
if (n >=1 && n <=3)
{
printf("You picked a small number.\n");
}
else if (n >= 4 && n <= 6)
{
printf("You picked a medium number.\n");
}
else if (n >= 7 && n <= 10)
{
printf("You picked a big number.\n");
}
else
{
printf("You picked an invalid number.\n");
}
}
Погрешность десятичных дробей, связанная с разрядностью программы.
imprecision.c
include <stdio.h>
int main(void)
{
printf("%f\n", 1.0/10.0);
}
imprecision10.c (сохранил баловство Дэвида с количеством нулей после запятой в отдельные программы)
#include <stdio.h>
int main(void)
{
printf("%.10f\n", 1.0/10.0);
}
imprecision20.c
#include <stdio.h>
int main(void)
{
printf("%.20f\n", 1.0/10.0);
}
imprecision29.c
#include <stdio.h>
int main(void)
{
printf("%.29f\n", 1.0/10.0);
}
Первая демонстрация цикла - for
loopdemo.c
#include <stdio.h>
int main(void)
{
for (int i = 0; i < 50; i++)
{printf("%i\n", i);
}
}
Создание функций
function-0.c
#include <cs50.h>
#include <stdio.h>
void PrintName(string name);
int main(void)
{
printf("Your Name: ");
string s = get_string("");
PrintName(s);
}
void PrintName(string name)
{
printf("Hello, %s\n", name);
}
function-1.c
Помимо самопальной функции, имеем ещё и do-цикл и return
#include <cs50.h>
#include <stdio.h>
int GetPositiveInt();
int main(void)
{
int n = GetPositiveInt();
printf("Thanks for the %i!\n", n);
}
int GetPositiveInt(void)
{
int n;
do
{
printf("Please geve me a positive int: ");
n = get_int("");
}
while (n < 1);
return n;
}
И завершающая прога четвёртой лекции, демонстрируюшая return на примере возведения целого числа в куб.
return.c
#include <cs50.h>
#include <stdio.h>
int cube(int a);
int main(void)
{
int x = 2;
printf("x is now %i\n", x);
printf("Cubing...\n");
x = cube(x);
printf("Cubed!\n");
printf("x is now %i\n", x);
}
int cube(int n)
{
return n*n*n;
}
Ууууух, блэт! Качественно намудохался с их средой, и так и не нашёл актуальные команды к терминалу.
Написал прогу Хало Ворлд из третьей лекции от 2015 года, тут же решил сохранить и скомпилировать её через make. Хуй там! В ответ появился вопрос Did you type helloword.c? Эмм... Почему-то в демонстрации у гарвардского препода такой проблемы не было. Вспоминая, как он в другой ситуации просто ввёл букву y, чтобы дать положительный ответ, повторил за ним. Терминал команду не понял. От нефиг делать написал слово полностью - yes. Терминал лёг, спамя буквой y.
Благо, в лекции показали староверскую версию команды - clang. Один хуй, компилятор не завёлся.
Я пробовал сохранять файл и через выпадающее меню. Файл-то сохранился, но компилятор от этого работать не стал - терминал не находит его
Теперь думаю, ну нахой этот CS50, пойду качну нормальную оффлайн IDE и книгу Кернигана\Ритчи.
Обещания, данные подписчикам, надо выполнять, так что добро пожаловать в курс 'Введение в Информационные Технологии' от Гарварда.
В 2012 году один из самых знаменитых вузов мира - Массачусетский Технологический Институт, тот самый MIT, который "закончил" Gordon Freeman из Half-Life, представил миру платформу MITx, которая позволяла любому, имеющему доступ к интернет и владеющему английским языком, получать образование высочайшего уровня и не платить при этом ни копейки - оплата требовалась только при желании получить сертификат о прохождении курса.
С течением времени, к MIT присоединилось множество других вузов, включая знаменитые Стэнфорд, Сорбонну и Университет Беркли, и проект был переименован в edX edx.org
На сегодняшний день edX предлагает более 2500 тысяч курсов, в проекте участвует около 140 вузов планеты, а количество студентов перевалило за 25 миллионов.
При всех достоинствах этой шикарной платформы (а я прошел там несколько курсов и могу судить), для русско-говорящей аудитории один факт перевешивал все: русскоязычных курсов почти не было, они начали появляться лишь недавно, правда, сразу от МИФИ и ЛИТМО.
Среди множества курсов платформы, некоторые сразу привлекают внимание, например, награжденный за качество гарвардский курс введения в информационные технологии.
Оригинал курса: https://www.edx.org/course/cs50s-introduction-to-computer-sc...
Этот курс уже переводили на русский язык, и перевод доступен в записи, однако это версия от 2015 года: несколько устаревшая, да и получить помощь по ней будет затруднительно (если этот выпуск кто-то еще поддерживает, дайте мне знать)
Итак, если вы интересуетесь программированием или информационными технологиями, хотите лучше понять как все это работает или даже интересуетесь работой в этой отрасли: присоединяйтесь, будем рады!
Первая неделя: тут, начинаем в эту субботу в пять часов по Москве
Задать вопросы и обсудить: можно в комментах, можно тут
Длительность курса: 12 недель
Нагрузка: 6-18 часов в неделю
Стоимость: бесплатно
Авторство: HarvardX
Предмет: Введение в Информационные Технологии
Перевод: Канал "Перейти в Айти"
Уровень: Для Начинающих
Тег для подписки/отписки: cs50
Друзья, мы рады сообщить, что перевод всего гарвардского курса CS50 закончен. В курсе было 24 серии, но последние две были одной и той же лекцией - одна прочитана в Гарварде, а другая в Йеле.
Курс переведён и озвучен нашей студией по заказу JavaRush, и мы хотим сказать им огромное спасибо за поддержку!
На кого рассчитан курс CS50?
Если вы — новичок, пройдите CS50. Если кто-то из ваших знакомых приглядывается к ИТ и программированию, советуйте CS50 не глядя. Я серьезно.
CS50 подойдет любому человеку, кто решил стать «айтишником». Пожалуй, его можно рекомендовать и способным 12-летним, и умудренным опытом «перебежчикам» из других профессий. Идеально — старшеклассникам и студентам.
Курс очень прогрессивный и обновляется из года в год. При этом в отличие от большинства подобных университетских обучающих программ (например, MIT 6.00X) от слушателя не требуются знания университетской математики, достаточно школьного уровня.
Что изучают на CS50?
— Основы компьютерных наук и программирования. Системы счисления, работа с командной строкой в Linux, циклы, условные переходы и прочие радости;
— Концепции алгоритмов и алгоритмичности мышления. Вы узнаете о том, какие задачи можно решать с помощью программирования и каким образом. О бинарном поиске, простом по сути, но очень эффективном и требующем тщательности в реализации, Дэвид Малан расскажет сходу, прямо на нулевой лекции. И попробуйте потом забыть сцену с разрывом телефонного справочника, а вместе с ней — и полученные знания! Вообще, курс охватывает все основные алгоритмы, которые нужно знать и понимать «айтишникам»;
— Концепции абстракции, структуры данных, инкапсуляции, управления памятью. Основы компьютерной безопасности. Процесс разработки ПО и веб-разработка;
— Основы языка программирования C и визуального языка Scratch. Собственно, все основные примеры и задания студенты делают на языке C;
— Основы баз данных и SQL;
— Веб-разработка: основы CSS, HTML, JavaScript и PHP. Естественно, только самые азы;
— Основы подготовки презентации проектов по программированию.
Список переведённых лекций:
1-я лекция: вступительная, знакомит с общими понятиями языков программирования, а также с командой преподавателей и системой предстоящих занятий.
2-я лекция: также является вступительной и знакомит с общими понятиями языков программирования, продолжая тему первой лекции.
3-я лекция: знакомит с понятием и функциями компилирования и рассказывает, каким образом в программах появляются баги (начиная с самого первого «компьютерного жучка»), как их распознать и чем они могут быть вызваны.
4-я лекция: знакомит с типами данных и циклов, некоторыми базовыми функциями и основной схемой составления программы, а также демонстрирует ограниченность возможностей компьютеров и исторические примеры багов, не прошедших бесследно.
5-я лекция: продолжение о багах, плюс раскрывает понятие структуры программы, объясняет, зачем нужны функции внутри кода, в чём важность области действия значений, и вводит функцию strlen. Также из неё вы узнаете, как в CS50 борются с любителями списывать, и научитесь экономить оперативную память компьютера во избежание ошибки сегментации.
6-я лекция: об основах криптографии, массивах и аргументах командной строки.
7-я лекция: знакомит с основными методами сортировки данных. Дэвид Мэйлен рассказывает о пузырьковой сортировке, сортировках выбором, вставкой и слиянием, а зрители проверяют их на практике.
8-я лекция: про сортировку данных методом слияния, а также краткий экскурс в мир побитовых операций.
9-я лекция: продолжение знакомства с оператором условия — if, введение понятие рекурсии, а также обсуждение скандала концерна Volkswagen и проблемы компьютерной безопасности. Лектор детально рассматривает функцию перестановки - swap, демонстрирует приёмы работы с отладчиком программ и раскрывает структуру и механику оперативной памяти.
10-я лекция: о разных методах составления списков, сохранении информации о программе и использовании указателей и указуемых.
11-я лекция: изучение указателей, разбор структуры функций библиотеки CS50, знакомство с утечкой памяти, введение понятия linked list и других структур данных с детальной демонстрацией.
12-я лекция: про особенности стека, очереди и связного списка. Разбор возможных проблем, связанных с доступом к памяти. Тут же рассматривается структура двоичного дерева, префиксного дерева и работа со сжатием файлов.
13-я лекция: о хэшировании данных, сетевых протоколах и о том, как при помощи зашифрованных соединений защитить себя от подозрительных незнакомцев.
14-я лекция: введение в веб-программирование и знакомство с языками HTML и CSS. Впервые в истории студенты двух учебных заведений — Гарварда и Йеля — при помощи современных технологий параллельно проходят обучение на курсе.
15-я лекция: знакомство с языком программирования PHP и языком разметки HTML.
16-я лекция: продолжение рассмотрения языка PHP, теперь для разработки веб-приложений, а также знакомство с базами данных и MySQL.
17-я лекция: продолжение знакомства с базами данных SQL.
18-я лекция: введение в JavaScrip tи программирование на стороне клиента.
19-я лекция: продолжается знакомство с языком JavaScrip , а также демонстрируется использование компьютерных технологий в сфере археологии.
20-я лекция: рассматривается тема компьютерной безопасности: излагаются основы личной безопасности в Интернете, принципы работы с паролями, объясняется специфика вредоносного программного обеспечения. Также в лекции затрагиваются проблемы неприкосновенности личных данных в современную цифровую эпоху, в том числе в общественно-политическом контексте.
21-я лекция: профессор Сказелатти из Йельского Университета рассказывает о системах обработки естественных языков. В лекции рассматриваются алгоритмы распознавания речи, раскрывается понятие статистических моделей распознавания речи, скрытых марковских моделей, вопросно-ответной системы, семантической обработки текста, а также затрагивается тема создания систем невербального общения.
22-я лекция: профессор Сказелатти из Йельского Университета демонстрирует использование искусственного интеллекта в играх. В лекции рассматриваются алгоритмы минимакс и альфа-бета-отсечение, а также разбирается игра робота в крестики-нолики.
23-я лекция: подводятся итоги курса, в игровой форме повторяются некоторые темы, идет непринужденное общение.
Поддержите нас плюсом и подписывайтесь на нас и сообщество «Наука».
Алоха, пикабу!
Представляем 22-ую лекцию легендарного Гарвардского курса CS50, который мы переводим и озвучиваем специально для JavaRush. В ней профессор Сказелатти из Йельского Университета демонстрирует использование искусственного интеллекта в играх. В лекции рассматриваются алгоритмы минимакс и альфа-бета-отсечение, а также разбирается игра робота в крестики-нолики.
Всего в курсе 24-лекции, и если вы ещё не посмотрели предыдущие – самое время начать знакомиться с ними. Список лекций 1-20 вот тут, а 21-ая лекция тут.
На кого рассчитан курс CS50?
Если вы — новичок, пройдите CS50. Если кто-то из ваших знакомых приглядывается к ИТ и программированию, советуйте CS50 не глядя. Я серьезно.
CS50 подойдет любому человеку, кто решил стать «айтишником». Пожалуй, его можно рекомендовать и способным 12-летним, и умудренным опытом «перебежчикам» из других профессий. Идеально — старшеклассникам и студентам.
Курс очень прогрессивный и обновляется из года в год. При этом в отличие от большинства подобных университетских обучающих программ (например, MIT 6.00X) от слушателя не требуются знания университетской математики, достаточно школьного уровня.
Что изучают на CS50?
— Основы компьютерных наук и программирования. Системы счисления, работа с командной строкой в Linux, циклы, условные переходы и прочие радости;
— Концепции алгоритмов и алгоритмичности мышления. Вы узнаете о том, какие задачи можно решать с помощью программирования и каким образом. О бинарном поиске, простом по сути, но очень эффективном и требующем тщательности в реализации, Дэвид Малан расскажет сходу, прямо на нулевой лекции. И попробуйте потом забыть сцену с разрывом телефонного справочника, а вместе с ней — и полученные знания! Вообще, курс охватывает все основные алгоритмы, которые нужно знать и понимать «айтишникам»;
— Концепции абстракции, структуры данных, инкапсуляции, управления памятью. Основы компьютерной безопасности. Процесс разработки ПО и веб-разработка;
— Основы языка программирования C и визуального языка Scratch. Собственно, все основные примеры и задания студенты делают на языке C;
— Основы баз данных и SQL;
— Веб-разработка: основы CSS, HTML, JavaScript и PHP. Естественно, только самые азы;
— Основы подготовки презентации проектов по программированию.
Поддержите нас плюсом и подписывайтесь на нас и сообщество «Наука».
Доброго дня, Пикабу! Представляем 21-ую лекцию легендарного Гарвардского курса CS50, который мы переводим и озвучиваем специально для JavaRush.
В этой серии цикла профессор Сказелатти из Йельского Университета рассказывает о системах обработки естественных языков. В лекции рассматриваются алгоритмы распознавания речи, раскрывается понятие статистических моделей распознавания речи, скрытых марковских моделей, вопросно-ответной системы, семантической обработки текста, а также затрагивается тема создания систем невербального общения.
Всего в курсе 24-лекции, и если вы ещё не посмотрели предыдущие 20 – самое время начать знакомиться с ними. Список предыдущих лекций вот тут.
На кого рассчитан курс CS50?
Если вы — новичок, пройдите CS50. Если кто-то из ваших знакомых приглядывается к ИТ и программированию, советуйте CS50 не глядя. Я серьезно.
CS50 подойдет любому человеку, кто решил стать «айтишником». Пожалуй, его можно рекомендовать и способным 12-летним, и умудренным опытом «перебежчикам» из других профессий. Идеально — старшеклассникам и студентам.
Курс очень прогрессивный и обновляется из года в год. При этом в отличие от большинства подобных университетских обучающих программ (например, MIT 6.00X) от слушателя не требуются знания университетской математики, достаточно школьного уровня.
Что изучают на CS50?
— Основы компьютерных наук и программирования. Системы счисления, работа с командной строкой в Linux, циклы, условные переходы и прочие радости;
— Концепции алгоритмов и алгоритмичности мышления. Вы узнаете о том, какие задачи можно решать с помощью программирования и каким образом. О бинарном поиске, простом по сути, но очень эффективном и требующем тщательности в реализации, Дэвид Малан расскажет сходу, прямо на нулевой лекции. И попробуйте потом забыть сцену с разрывом телефонного справочника, а вместе с ней — и полученные знания! Вообще, курс охватывает все основные алгоритмы, которые нужно знать и понимать «айтишникам»;
— Концепции абстракции, структуры данных, инкапсуляции, управления памятью. Основы компьютерной безопасности. Процесс разработки ПО и веб-разработка;
— Основы языка программирования C и визуального языка Scratch. Собственно, все основные примеры и задания студенты делают на языке C;
— Основы баз данных и SQL;
— Веб-разработка: основы CSS, HTML, JavaScript и PHP. Естественно, только самые азы;
— Основы подготовки презентации проектов по программированию.
Поддержите нас плюсом и подписывайтесь на нас и сообщество «Наука».