Introduction to Systematic Program Design - Part 1 [3788]


Gregor Kiczales

This course is about learning to program well: building programs that are elegant, well tested and easy to maintain. The course is intended for students with no programming experience, but many former students who already knew how to program have said it made them better programmers.

Workload: 7-9 hours/week 

Sessions:
Jun 3rd 2013 (8 weeks long)

About the Course 

Phones, diesel engines, animated newspapers, medical devices, games, political campaigns, medical research, mining, transportation systems, ... and so on, and on, and on... every day more of the world around us is at least partly run by computer programs. This means that being able to design programs - or at least be able to work with people who design programs - is becoming a more and more valuable skill.

To build your own programs you need to know two things: how to use the specific programming language and libraries needed, and the more general skill of how to design a program.

This course presents a design method that will enable you to approach the design of complex programs systematically. The method will work for programs in this course as well as hard to design programs you develop in the future.

Using this method you will learn how to model the information in a problem domain, how to structure program data to mirror that information and how to further structure the data to lead to a well organized program. You will also learn to distinguish those parts of a program that are naturally data driven, from those that should use an alternative algorithmic approach. The method uses unit-tests to both produce a better developed design, and to test your program as you develop it.

The course has a two-phase structure. In the first phase we use a simple teaching language to cover the core of the design method. The second phase consists of parallel tracks, with each track using a different popular programming language and focusing on a different kind of problem. This will help you bring the design method to whatever language and problem domain interests you.

 

 
 
Watch intro video
 

Recommended Background

No prior programming experience is assumed, and only a grade school math background is required.
 

Suggested Readings

A detailed description of the design method, as well as weekly lecture notes will be available online. No textbook is required, but the second edition of How to Design Programs, by Felleisen, Findler, Flatt and Krishnamurthi is valuable supplementary reading; the book is available online at no cost.

Course Format

The course will include weekly video lecture material as well as assigned design problems. Solutions to the problems will be available both as code - to show the final result - and in video form to show the design process that produced the result. There will also be small projects and a final exam.

FAQ

Can students ask questions? 

We will use an on-line discussion group to enable students to ask and answer questions. Course staff will monitor the group to ensure accuracy of student answers as well as to handle unanswered questions.

What programming languages will the course use?

The first half of the course uses a teaching language called Beginning Student Language. The second half of the course will be broken into parallel tracks that tackle problems in different domains using different popular languages such as Python, Matlab and Javascript.
 


450 Free Online Programming & Computer Science Courses You Can Start in August
Підготовка та впровадження проектів розвитку громад
Рада Європи: Доступ до публічної інформації: від А до Я
New MicroMasters® Programs: Gain In-Demand Knowledge to Advance Your Career
Data Science at Scale Specialization
Harness Business Data
Young Entrepreneurs 2017 NUCC
The Top 10 Open Course Education Websites of 2017
90 бесплатных онлайн-курсов февраля про бизнес и IT от лучших университетов мира
230 бесплатных онлайн-курсов января по программированию и предпринимательству


Все статьи раздела Образование

Новини

09:56 - Как доказательство ремонта дефективного конвертера на “Азовстали” показали разноцветную табличку
09:56 - Украина получит от Европейского инвестбанка кредит на 211 млн евро
09:56 - Нынешняя медреформа не привлечет в здравоохранение необходимое дополнительное финансирование
09:56 - НБУ обжалует решения судов по “Буковелю” в пользу Коломойского и Боголюбова
09:56 - “Энергорынок” снова объявил тендер на привлечение 2,7 млрд гривен для финансирования бизнеса Ахметова
09:56 - США: “Северный поток-2” поставит Украину в уязвимое политическое положение
09:56 - Владелец “Северстали” пожаловался, что немцы отключили его бизнес от своего “облака”
09:56 - В России уволили куратора безопасности Керченского моста
09:56 - Верховный суд отменил решение о взыскании кредита, принятое без должника
09:56 - “Украинская биржа” отложила запуск новых фьючерсов из-за запрета на использование ее российского ПО
09:04 - Вороватые братья Дубневичи владеют недвижимостью в Латвии
09:04 - “Укроборонпром” создает бронетехнику нового поколения
09:04 - Украина продлила санкции против захваченных Россией в Крыму предприятий
09:04 - НБУ разрешил докапитализацию подсанкционных украинских банков их российскими хозяевами
09:04 - Объем промышленной продукции Донецкой области в январе—апреле 2018 года по сравнению с январем—апрелем 2017 года увеличился на 3,3%
09:04 - Суркисы вывели деньги за трансфер Ярмоленко на кипрский офшор
09:04 - Долг потребителей перед “Киевэнерго” Ахметова превышает долг перед “Нафтогазом” на 1 млрд гривен
09:04 - В Запорожье пытались ликвидировать экс-хозяина шлаковых отвалов “Запорожстали” и “Днепроспецстали”
09:04 - Социально-экономическое положение Донецкой области в январе—апреле 2018 года
09:04 - Украина 12 июня подаст в суд ООН доказательства против России
09:04 - Владимир Омелян запустит в следующем году строительство 4-5 взлетно-посадочных полос
09:04 - Минфин призывает нардепов оставить в действии антикоррупционную норму “24 часа” на таможне
09:04 - Довіряй, але перевіряй: як українські банки обманюють позичальників
08:12 - Договорнякгейт. Как Аваков “схватил за мячики” региональную элиту страны
08:12 - Антимонопольный комитет оштрафовал “Укртрансгаз” на 1,65 млн гривен
08:12 - Следователи по делу о крушении MH17 на Донбассе: Boeing был сбит российским “Буком”
08:12 - Тактика жабьих прыжков. Как ВСУ подбираются к Донецку
08:12 - Санкции против “Московской биржи” доконали главу правления “Украинской биржи”
08:12 - Пресс-секретарь президента России просит не считать владельцев “Альфа-банка” и “Киевстара” “путинскими эмиссарами”
08:12 - У российского госбанка, которому принадлежит Проминвестбанк и ИСД, сменился глава правления


Більше новин

ТікерOpenMaxMinCloseVolume
AVTO100100858546550.00
BAVL0.35750.35750.3140.331447849.00
CEEN19.3919.391616.221247151.20
DNON223.2223.222322380346.00
DOEN24.6524.7222280642.80
DOGZ0.060.060.060.0660.00
KRAZ0.0550.0550.0550.0552750.00
KSTL444448000.00
KUBI65.365.3656514305.00
KVBZ12.1512.1511.111.1159831.00
LUAZ0.01250.01250.01250.01252250.00
MHPC364364345345362570.00
NVTR0.30.30.30.3600.00
ODEN1.351.351.351.3585050.00
SHCHZ1.021.021.021.021020.00
TATM14.314.53813.86113.861110772.80
UA00174104810481048104829344.00
UA00745981.26981.26981.26981.262102840.18
UNAF112.1113.9106.7109.9531743.00
UTLM0.1610.1750.1610.17560550.00
VIEN1501501401404400.00
YASK0.340.340.220.29825975.00

Дані за 24.05.2018