Introduction to Systematic Program Design - Part 1 [4584]


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.
 


Відкрито безкоштовний доступ для українців до навчальних програм Genius з 1 листопада до 4 грудня
10 наших найпопулярніших курсів із free
Безкоштовні курси для українців
Безкоштовні онлайн-сервіси вивчення мов для українців
Освітній онлайн-курс «Деривативи на ринках агропродовольчої продукції в Україні та світі» - USAID FST
Основи фінансів та інвестицій
Коронавірусна інфекція: факти проти паніки
Class Central’s Top 100 MOOCs of All Time (2019 edition)
100+ Free Online Courses to Learn about the UN’s Sustainable Development Goals
200 Best Free Coursera Courses in 2019


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

Risk and reward dance,
A delicate balance,
Traders walk the tightrope.

- Fin.Org.UA

Новини

23:00 - Новини від Міністерства енергетики України
18:06 - У понеділок відключення електроенергії діятимуть 6 годин
18:00 - Індія відхилила прохання Apple призупинити розгляд антимонопольного звіту
17:01 - У "Запоріжжяобленерго" відібрали історичну пам'ятку Будинок першої ТЕС
16:53 - Світлана Гринчук: Результати СОР29 відкривають нові шляхи фінансування кліматичних проектів України
16:10 - Нацбанк за тиждень продав понад 590 мільйонів доларів
15:12 - У Швейцарії вирішують на референдумі, чи потрібно фінансувати "Євробачення-2025"
14:17 - Ймовірний наступний міністр торгівлі США веде перемовини про криптокредитування на $2 млрд
13:07 - США видали ордер на арешт Ґаутаму Адані та його племіннику у справі про хабарництво
12:23 - Мінсоцполітики та Світовий банк обговорили спільні проекти з реформування системи соціальної підтримки в Україні
11:50 - За добу енергетики заживили майже 40 тисяч споживачів
10:52 - "Укренерго" послабила обмеження світла у неділю
10:10 - Ситуація в енергосистемі на 24 листопада: енергетики відновили живлення для понад 39 тисяч споживачів
10:01 - Оперативна інформація ДСНС щодо ліквідації наслідків ведення бойових дій російською федерацією та щодо роботи піротехнічних підрозділів
10:00 - Кліматичний саміт схвалив фінансування на $300 млрд країнам, що розвиваються
07:35 - Фінансовий астрологічний прогноз на 24.11.2024
23:00 - Новини від Міністерства енергетики України
22:42 - У Києві відбувся Третій Міжнародний саміт з продовольчої безпеки «Зерно з України»
21:00 - Новини від Міністерства енергетики України
19:59 - Енергетики скасували обмеження світла до кінця доби
19:34 - Олексій Кулеба провів екстрене засідання Штабу по опалювальному сезону у Кривому Розі
18:36 - Прем’єр-міністр: Є перспектива вдвічі збільшити обсяги аграрного експорту й забезпечити продовольством до 600 млн людей в усьому світі
18:21 - У неділю відключення світла діятимуть 4 години
17:57 - Україна планує запровадити навчальні програми з кліматично нейтральних технологій в енергетиці – Микола Колісник на Rebuild Ukraine 2024
17:39 - Світові банки можуть зупинити кредитування другої найбагатшої людини Індії після звинувачень у США
17:36 - Мінінфраструктури відвідала моніторингова група Єврокомісії для обговорення виконання індикаторів Плану України
16:30 - Карти UnionPay, видані "Газпромбанком", припиняють роботу за межами московія через санкції
16:00 - Азартні ігри: у фірми голови асоціації діячів грального бізнесу відсудили 17 мільйонів
15:01 - Huawei планує створити 100 000 додатків для своєї операційної системи протягом року
14:12 - Прем’єр-міністр взяв участь у заходах до Дня пам’яті жертв Голодомору


Більше новин

ВалютаКурс
Австралійський долар26.8451
Канадський долар29.5412
Юань Женьміньбі5.7014
Чеська крона1.6953
Данська крона5.7649
Гонконгівський долар5.3079
Форинт0.104548
Індійська рупія0.4892
Рупія0.0026023
Новий ізраїльський шекель11.1047
Єна0.2674
Теньге0.082749
Вона0.029378
Мексиканське песо2.0213
Молдовський лей2.2616
Новозеландський долар24.1263
Норвезька крона3.7203
московський рубль0.40192
Сінгапурський долар30.6455
Ренд2.2882
Шведська крона3.7214
Швейцарський франк46.4105
Єгипетський фунт0.8318
Фунт стерлінгів51.6884
Долар США41.3193
Білоруський рубль15.0186
Азербайджанський манат24.3083
Румунський лей8.639
Турецька ліра1.1958
СПЗ (спеціальні права запозичення)54.0029
Болгарський лев21.9854
Євро42.9927
Злотий9.9118
Алжирський динар0.3096
Така0.3435
Вірменський драм0.10634
Домініканське песо0.6871
Іранський ріал0.00009233
Іракський динар0.031465
Сом0.48041
Ліванський фунт0.000461
Лівійський динар8.5517
Малайзійський ринггіт9.4149
Марокканський дирхам4.1919
Пакистанська рупія0.1484
Саудівський ріял10.9752
Донг0.0016306
Бат1.22059
Дирхам ОАЕ11.222
Туніський динар13.3344
Узбецький сум0.0032253
Новий тайванський долар1.2873
Туркменський новий манат11.777
Сербський динар0.38324
Сомоні3.8682
Ларі15.0408
Бразильський реал7.1483
Золото111681.94
Срібло1295.53
Платина39871.06
Паладій42396.91

Курси валют, встановлені НБУ на 25.11.2024