Introduction to Systematic Program Design - Part 1 [4655]


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


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

Bond yields fluctuate
Interest rates affect us all
Financial balance

- Fin.Org.UA

Новини

10:00 - московія хоче від США зняття авіасанкцій, ЄС зриває ці спроби – ЗМІ
07:35 - Фінансовий астрологічний прогноз на 19.04.2025
00:00 - Новини від Міністерства енергетики України
21:00 - Новини 18 квітня: оприлюднили текст меморандуму угоди про надра, новий етап переговорів – 24 квітня
20:25 - На Одещині викрили 16 нелегальних теплиць з вирощування тютюну, вилучили майже 56 тонн продукції
19:55 - В Україні найбільша площа посівів припадає на ячмінь: скільки посіяли інших культур
19:33 - Міжнародна допомога: Україна отримала додаткові вантажі енергообладнання з Литви, Польщі та Бельгії
19:15 - Надходження від військового збору зросли майже в 4 рази
19:08 - Ісландія посилює підтримку України у відновленні енергетичної інфраструктури
18:45 - "Укрзалізниця" призначила додатковий поїзд Київ – Кам'янець-Подільський – Київ
18:10 - В поїзді Суми - Київ сталась пожежа, загинув залізничник
17:57 - Національний банк отримав можливість звернути стягнення на іпотечне майно ТОВ "Торговий дім "Трансмагістраль" за постановою суду у справі про банкрутство
17:35 - Світовий банк надасть Україні 84 мільйони доларів: на що їх спрямують
16:59 - Raiffeisen Bank заперечує припинення продажу свого бізнесу в московія
16:50 - Зеленський ввів санкції проти компаній, які причетні до виробництва ворожих ракет
16:46 - Кабмін призначив нову голову Держтуризму
16:31 - Понад 50 сільгоспвиробників - клієнтів UGB отримають компенсацію від держави за розмінування агроземель
16:30 - Як книжка виявляє економічний потенціал суспільства
16:27 - Участь Міністерства економіки України у роботі Верховної Ради України 14 - 15 квітня 2025 року
16:20 - Нефть: пока отскок, не перелом тенденции
16:15 - В Україні щомісяця відкривається понад 4,7 тисячі нових боргів за штрафи ТЦК
16:07 - Кабмін призначив в Міненерго заступника міністра та перепризначив держсекретаря
16:00 - Курси валют, встановлені НБУ на 21.04.2025
15:51 - Руслан Кравченко: Надходження військового збору за перший квартал цього року перевищили 34 млрд гривень
15:29 - Кабмін виділив 830 мільйонів на облаштування шкільних укриттів
15:08 - Інвестувати стане простіше: Уряд змінив правила для проєктів із значними інвестиціями
15:04 - Наказ Міністерства економіки України від 25.03.2025 № 1875 “Про внесення змін до листа очікувань власника державного підприємства «ПРОЗОРРО» на 2025 рік, затвердженого наказом Мінекономіки від 16.01.2025 № 443
15:01 - Наказ Міністерства економіки України від 07.04.2025 № 2052 “Про затвердження листа очікувань власника державного підприємства “Український науково-дослідний і навчальний центр проблем стандартизації, сертифікації та якості” на 2025 рік
15:00 - Наказ Міністерства економіки України від 15.04.2025 № 2178 “Про затвердження листа очікувань власника приватного акціонерного товариства «Українська фінансова житлова компанія» на 2025 рік
14:56 - Наказ Міністерства економіки України від 17.04.2025 № 2196 “Про затвердження листа очікувань власника державного підприємства “Науково-дослідний інститут метрології вимірювальних і управляючих систем” на 2025 рік”


Більше новин

ВалютаКурс
Алжирський динар0.31283
Австралійський долар26.2489
Така0.33931
Канадський долар29.8733
Юань Женьміньбі5.7439
Чеська крона1.8796
Данська крона6.145
Гонконгівський долар5.3545
Форинт0.115549
Індійська рупія0.48054
Рупія0.0024592
Новий ізраїльський шекель11.2153
Єна0.2907
Теньге0.07912
Вона0.029084
Ліванський фунт0.000463
Малайзійський ринггіт9.3729
Мексиканське песо2.0725
Молдовський лей2.4034
Новозеландський долар24.4792
Норвезька крона3.8935
Саудівський ріял11.0388
Сінгапурський долар31.5154
Донг0.0016626
Ренд2.1934
Шведська крона4.2642
Швейцарський франк50.6925
Бат1.24621
Дирхам ОАЕ11.2717
Туніський динар13.8525
Єгипетський фунт0.8086
Фунт стерлінгів54.878
Долар США41.3955
Сербський динар0.4012
Азербайджанський манат24.3503
Румунський лей9.4605
Турецька ліра1.0876
СПЗ (спеціальні права запозичення)56.1723
Болгарський лев24.0437
Євро47.0253
Ларі15.0513
Злотий10.9916
Золото136839.03
Срібло1337.49
Платина39698.28
Паладій39367.12

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