Introduction to Systematic Program Design - Part 1 [4627]


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


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

Germany's engine
Exports drive the economy
But growth starts to slow

- Fin.Org.UA

Новини

21:00 - Новини 18 лютого: московія пропонує Трампу свої надра, США розглядають зняття санкцій з Кремля
20:51 - ЄС заперечує чутки про пропозицію для США зі зниження мит на автомобілі
20:40 - "Нова пошта" закриває останнє відділення у Покровську
20:22 - США розглядають зняття санкцій з московія у межах мирних переговорів – Bloomberg
20:20 - московія знайшла нові танкери, щоб продавати свою нафту в обхід санкцій
19:51 - Акції Intel зробили найбільший стрибок з 2023 року
19:40 - Ястребиное снижение ставки в Австралии поддержало AUD
19:29 - Україна прагне збільшити торгівлю з Туреччиною до 10 мільярдів доларів – Свириденко
19:00 - В Україні споживання металопрокату зросло у понад 2 рази
18:35 - Україна може відновити транзит газу: міністр енергетики назвав умову
18:27 - Наглядова рада "Енергоатома" оцінить доцільність добудови Хмельницької АЕС
18:00 - В Україні в середу діятимуть обмеження елекроенергії для бізнесу і промисловості
17:55 - Світові індекси відреагували на перемовини США та московія в Саудівській Аравії
17:34 - НБУ може позбавити Порошенка впливу на "Міжнародний інвестиційний банк"
17:21 - Meta планує прокласти найдовший у світі підводний кабель
16:52 - Китай блокує експорт літієвих технологій на тлі торгівельної напруженості
16:47 - Суд скасував рішення, які дозволяли фірмі з оточення Коломойського списати великий борг
16:38 - Google виділяє 15 мільйонів доларів на освіту з кібербезпеки для 20 ВНЗ, два з них – українські
16:36 - «Власна Справа» від Міністерства економіки України об’єднує Work.ua та Ощадбанк для підтримки українського ветеранського бізнесу
16:14 - З початку року на Чернігівщині видано понад тисячу витягів з технічної документації про нормативну грошову оцінку земельної ділянки
16:02 - В Україні перекрили канал контрабанди авто під виглядом допомоги для військових
16:00 - Москва пропонує Трампу угоду щодо російських природних ресурсів – росЗМІ
15:50 - Мінагрополітики: 24 українські компанії презентували органічну продукцію на Національному павільйоні України
15:41 - Європа ризикує стати "складальним цехом" для китайських виробників акумуляторів – FT
15:36 - IKEA відновить роботу в Україні у 2025 році
15:30 - Курси валют, встановлені НБУ на 19.02.2025
15:21 - Мін’юст: Шлюбний договір – захист прав та інтересів подружжя
15:20 - Кабмін розподілив майже 13 мільярдів на дороги
15:15 - Мінюст роз’яснює, хто має переважне право купівлі частки у праві спільної часткової власності
15:11 - Відбулася друга офіційна зустріч членів Альянсу з гендерно-відповідального та інклюзивного відновлення в Україні


Більше новин

ВалютаКурс
Австралійський долар26.3848
Канадський долар29.2781
Юань Женьміньбі5.7107
Чеська крона1.732
Данська крона5.8282
Гонконгівський долар5.3459
Форинт0.108242
Індійська рупія0.47801
Рупія0.0025538
Новий ізраїльський шекель11.685
Єна0.27399
Теньге0.083148
Вона0.028841
Мексиканське песо2.0506
Молдовський лей2.2279
Новозеландський долар23.6993
Норвезька крона3.7286
московський рубль0.45482
Сінгапурський долар30.9558
Ренд2.2563
Шведська крона3.8769
Швейцарський франк46.1177
Єгипетський фунт0.8208
Фунт стерлінгів52.331
Долар США41.5705
Білоруський рубль15.11
Азербайджанський манат24.4576
Румунський лей8.7333
Турецька ліра1.146
СПЗ (спеціальні права запозичення)54.4758
Болгарський лев22.2243
Євро43.4661
Злотий10.4357
Алжирський динар0.30885
Така0.34202
Вірменський драм0.105011
Домініканське песо0.67874
Іранський ріал0.0000722
Іракський динар0.031852
Сом0.47714
Ліванський фунт0.000425
Лівійський динар8.4968
Малайзійський ринггіт9.3578
Марокканський дирхам4.1597
Пакистанська рупія0.14966
Саудівський ріял11.1249
Донг0.0016635
Бат1.24137
Дирхам ОАЕ11.3606
Туніський динар13.0832
Узбецький сум0.0032204
Новий тайванський долар1.27709
Туркменський новий манат11.9218
Сербський динар0.36978
Сомоні3.8193
Ларі14.628
Бразильський реал7.1165
Золото121279.02
Срібло1349.74
Платина40966.48
Паладій40644.72

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