Introduction to Systematic Program Design - Part 1 [4751]


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


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

Eurozone struggles
Fears of deflation linger
ECB takes action

- Fin.Org.UA

Новини

21:00 - Новини 18 грудня: інцидент військового у банку, копійка та шаг, "вкрадені" мільярди у Києва
20:40 - З'явились детальні графіки відключень для Києва та області на 19 грудня
20:37 - Нацбанк купує машину для знищення монет: скільки планує витратити
20:20 - ЦБ московія погрожує судом європейським банкам через заморожені активи
20:13 - В Україні оголосили про успішну реструктуризацію ВВП-варантів
19:55 - московія зобов'язала РЖД продати хмарочос у "Москва-Сіті" через труднощі з боргом
19:43 - У московії за тиждень десять разів ламалися двигуни літаків: серед них - "Побєда"
19:20 - Британія запровадила нові санкції проти енергетичного сектору московії
19:10 - Львівська міськрада відсудила 6 га під недобудованою Євробаскет-ареною
18:59 - Україні дозволили й надалі експлуатувати великі спалювальні установки – Міненерго
18:45 - Інфляція в США несподівано впала – але дані викликають сумніви
18:30 - У листопаді українці знизили споживання пального
18:16 - Податкова попереджає про можливі обмеження в роботі електронних сервісів
18:03 - В Україні 19 грудня графіки відключення світла діятимуть всю добу
17:50 - Нацбанк показав курс долара та євро на п'ятницю 19 грудня
17:34 - Засідання Комісії
17:20 - Митниця попереджає про можливі затримки оформлення: яка причина
17:13 - Київ ухвалив бюджет-2026: Кличко згадав про "вкрадені" 8 мільярдів
16:55 - Завершення сезону: які мотоцикли найчастіше купують українці
16:45 - Smart Holding Новинського сплатив за три квартали на 41% менше податків
16:30 - Корупція на держпідприємствах: як оточення Зеленського зламало корпоративну реформу
16:24 - Велика загроза: Американська торговельна палата закликає посилити морський захист України
16:00 - Україна та Бельгія посилюють співпрацю
16:00 - В Києві встановили перше мобільне укриття
15:53 - Туристичний дашборд продемонстрував потребу у кадрах для галузі – Мінрозвитку
15:41 - Рекордно низький: в Україні вирахували рівень фінансового стресу
15:37 - Попри виклики війни та погоди: агропідприємство "Земля і воля" завершило сезон із рекордом
15:30 - Курси валют, встановлені НБУ на 19.12.2025
15:15 - Ліквідація банків: у листопаді кредиторам виплатили 111 мільйонів гривень
15:05 - В Одесі за 168 мільйонів гривень збудують укриття для міської клініки


Більше новин

ВалютаКурс
Алжирський динар0.32661
Австралійський долар27.9681
Така0.34637
Канадський долар30.6948
Юань Женьміньбі6.0128
Чеська крона2.0327
Данська крона6.6381
Гонконгівський долар5.4407
Форинт0.127703
Індійська рупія0.46909
Рупія0.002532
Новий ізраїльський шекель13.1577
Єна0.27172
Теньге0.082068
Вона0.028667
Ліванський фунт0.000473
Малайзійський ринггіт10.3603
Мексиканське песо2.3502
Молдовський лей2.5063
Новозеландський долар24.4033
Норвезька крона4.1483
Саудівський ріял11.2882
Сінгапурський долар32.7892
Донг0.0016082
Ренд2.5232
Шведська крона4.5483
Швейцарський франк53.2345
Бат1.34597
Дирхам ОАЕ11.5273
Туніський динар14.5245
Єгипетський фунт0.8898
Фунт стерлінгів56.7109
Долар США42.3374
Сербський динар0.42304
Азербайджанський манат24.9014
Румунський лей9.7424
Турецька ліра0.9907
СПЗ (спеціальні права запозичення)57.8656
Болгарський лев25.3608
Євро49.594
Ларі15.716
Злотий11.7905
Золото182971.24
Срібло2799.43
Платина81047.75
Паладій71210.24

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