Introduction to Systematic Program Design - Part 1 [4716]


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


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

Greece, Spain, and more
Debt crises are still alive
Can Europe revive?

- Fin.Org.UA

Новини

21:00 - Новини 2 вересня: Зеленський підписав закон про "соєві правки", Словаччина "задобрює" Путіна
20:45 - Ключовий постачальник Starbucks відчуває гіркі наслідки мит Трампа
20:25 - Бюджетний комітет ВР розповів, на що пішли кошти держбюджету за 8 місяців
20:15 - У московія готуються до дефіциту бюджету і скорочення видатків
20:00 - На Запоріжжі відкрили вже десяту "підземну школу"
19:45 - Морський експорт дизеля з московії впав у серпні через атаки дронів
19:30 - Трамп за день заробив на криптовалюті більше, ніж за життя на своїх хмарочосах
19:25 - Kyiv Independent заявляє про тиск з боку компанії Fire Point після розслідування
19:10 - Долговой рынок вновь драйвит валюты: жертва дня - фунт
19:10 - Золото вырвалось вверх из утомительного диапазона
19:10 - Словаччина збільшує імпорт російського газу, щоб "задобрити" Путіна
19:00 - «Національний кешбек»: держава підтримала продаж українських товарів на понад 5 млрд грн у липні
19:00 - На Львівщині в серпні відкрились 345 IT-бізнесів
18:50 - московія влаштувала у Вірменії хаб, щоб вивозити на Захід підсанкційні алмази – ЗМІ
18:35 - Сирія експортувала першу партію сирої нафти за 14 років
18:20 - "Херсонводоканал" витратив понад 152 мільйони гривень: які найдорожчі закупівлі
18:15 - PlayCity запустить систему онлайн-моніторингу азартних ігор: оголосило тендер
17:55 - Нацбанк показав курс долара і євро на середу 3 вересня
17:43 - За 7 місяців Україна експортувала яєць на понад 103 мільйони доларів
17:35 - У Києві на Жуковому острові фірма намагалася заволодіти землею за "туалетною схемою"
17:00 - Експорт соняшникової олії: найгірший показник за більш ніж три роки
16:55 - На Харківщині відремонтували прифронтові дороги за 796 мільйонів з резевного фонду
16:50 - Путін заявив, що московія готова співпрацювати з США та Україною в управлінні Запорізькою АЕС
16:20 - У серпні податкова на третину скоротила кількість фактичних перевірок
16:05 - Путін запропонував Словаччині відповідь Україні на удари по нафтопроводу "Дружба"
16:02 - Ключові рішення НКЦПФР від 02.09.2025
16:00 - Двох осіб підозрюють у заволодінні майже 25 мільйонів виділених на потреби ЗСУ: деталі
15:45 - "Алмейда Груп" запустила елеватор, який взяла у оренду в держави
15:35 - Кабмін вніс зміни до обов'язкових публікацій цін на будматеріали у Prozorro
15:30 - Курси валют, встановлені НБУ на 03.09.2025


Більше новин

ВалютаКурс
Алжирський динар0.3192
Австралійський долар26.9191
Така0.34045
Канадський долар29.9993
Юань Женьміньбі5.7897
Чеська крона1.9676
Данська крона6.4553
Гонконгівський долар5.2985
Форинт0.121771
Індійська рупія0.46919
Рупія0.00252
Новий ізраїльський шекель12.208
Єна0.2783
Теньге0.076637
Вона0.029639
Ліванський фунт0.000462
Малайзійський ринггіт9.7785
Мексиканське песо2.2043
Молдовський лей2.4965
Новозеландський долар24.216
Норвезька крона4.1272
Саудівський ріял11.0234
Сінгапурський долар32.1017
Донг0.0015706
Ренд2.3342
Шведська крона4.3776
Швейцарський франк51.4338
Бат1.27762
Дирхам ОАЕ11.2614
Туніський динар14.2332
Єгипетський фунт0.8524
Фунт стерлінгів55.3397
Долар США41.3631
Сербський динар0.41115
Азербайджанський манат24.3269
Румунський лей9.4809
Турецька ліра1.0049
СПЗ (спеціальні права запозичення)56.5043
Болгарський лев24.6312
Євро48.1756
Ларі15.3589
Злотий11.2983
Золото144308
Срібло1679.57
Платина57590.67
Паладій46690.67

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