Introduction to Systematic Program Design - Part 1 [4730]


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


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

Bulls and bears collide
Chaos in the financial world
Invest with caution

- Fin.Org.UA

Новини

12:00 - 50 лимонів для лимонної лихоманки
20:25 - московіяни атакували шахту ДТЕК на Дніпропетровщині
19:44 - московія атакувала енергооб'єкт на Чернігівщині: без світла 55 тисяч абонентів
19:27 - В Україні 20 жовтня діятимуть графіки відключення світла для промисловості
18:00 - Суд не повернув державі 12 мільйонів за сміттєсортувальну станцію на Донеччині
16:55 - У Львові збудують церкву: під землею буде трапезна-укриття
15:41 - Незаконна реклама казино: PlayCity оштрафувало трьох блогерок по 4,8 мільйона
14:50 - Фірмі не вдалося змінити рішення Київради щодо Протасового Яру, де у неї склади
13:45 - ЗСУ уразили Новокуйбишевський НПЗ та Оренбурзький газопереробний завод
13:10 - В московії ІТ-галузь занепадає через податковий тиск – розвідка
12:30 - День працівників харчової промисловості
12:05 - Імпорт продовжує витісняти українських сироварів з внутрішнього ринку: що буде далі
10:55 - В Києві горіла складська будівля: пожежу ліквідовано
10:00 - В Україні змінились ціни на огірки та помідори: скільки вони коштують
07:35 - Фінансовий астрологічний прогноз на 19.10.2025
18:00 - Уряд створив координаційний штаб захисту енергетики
17:32 - В Україні знову екстрені відключення
16:55 - Інфляція в єврозоні залишається в межах прогнозів – президент банку Німеччини
15:49 - "Збивають закон": Гетманцев прокоментував "податок на OLX" після скарги платформи
14:59 - Львів пустить автобуси замість трамваїв готуючись до блекаутів
14:31 - МВФ тисне на Україну з вимогою знецінити гривню – Bloomberg
14:15 - Українські фахівці вкотре відновлюють лінії електропостачання, які живлять Запорізьку АЕС. В ці хвилини тривають ремонтні роботи.
14:00 - "Енергоатом" посилює моніторинг виробничої діяльності на АЕС
13:30 - Світлана Гринчук взяла участь у зустрічі лідерів України та США у Вашингтоні
12:53 - Ремонт ліній електропередач до ЗАЕС відновлено
12:35 - На кордоні з Польщею може бути ускладнено рух транспорту
12:00 - Експорт українського цукру за 9 місяців впав більш ніж удвічі
11:10 - Приватизація держмайна 2025: комітет ВР перевірив виконання плану
10:00 - Україна і Словаччина готові співпрацювати для посилення енергетичної стійкості та безпеки
10:00 - Видатки держбюджету за 9 місяців на 20% перевищують минулорічні показники


Більше новин

ВалютаКурс
Алжирський динар0.32233
Австралійський долар27.0624
Така0.3433
Канадський долар29.7355
Юань Женьміньбі5.8584
Чеська крона2.0061
Данська крона6.5288
Гонконгівський долар5.3726
Форинт0.125047
Індійська рупія0.47437
Рупія0.0025153
Новий ізраїльський шекель12.6098
Єна0.2778
Теньге0.077603
Вона0.029374
Ліванський фунт0.000466
Малайзійський ринггіт9.8734
Мексиканське песо2.2636
Молдовський лей2.4748
Новозеландський долар23.9076
Норвезька крона4.154
Саудівський ріял11.1267
Сінгапурський долар32.232
Донг0.0015842
Ренд2.3988
Шведська крона4.4191
Швейцарський франк52.7304
Бат1.27333
Дирхам ОАЕ11.3618
Туніський динар14.2787
Єгипетський фунт0.8771
Фунт стерлінгів56.0653
Долар США41.7308
Сербський динар0.41611
Азербайджанський манат24.5519
Румунський лей9.5832
Турецька ліра0.9948
СПЗ (спеціальні права запозичення)57.0638
Болгарський лев24.9392
Євро48.7624
Ларі15.4165
Злотий11.479
Золото179238.38
Срібло2231.93
Платина69119.56
Паладій65534.05

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