Introduction to Systematic Program Design - Part 1 [4663]


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


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

Bonds steady and slow
Guaranteed income in sight
Retirement secured

- Fin.Org.UA

Новини

12:20 - ВІДДІЛ КОМУНІКАЦІЙ З ГРОМАДСЬКІСТЮ УПРАВЛІННЯ ІНФОРМАЦІЙНОЇ ВЗАЄМОДІЇ ГУ ДПС У ДНІПРОПЕТРОВСЬКІЙ ОБЛАСТІ (ТЕРИТОРІЯ ОБСЛУГОВУВАННЯ - МІСТО ДНІПРО) ІНФОРМУЄ!
11:05 - Чи може ФОП – платник єдиного податку другої або третьої групи продавати подарункові сертифікати, а потім приймати їх в якості оплати за поставку конкретних товарів/послуг покупцю?
11:03 - До уваги платників ПДВ!
10:55 - McDonald’s та Coca-Cola розповіли, чи мають наміри повертатися у московія
10:47 - Яка інформація зазначається в рядку 19 «засоби оплати (вид платіжного інструменту, талон, жетон тощо)» фіскального касового чека, якщо у рядку 18 вказано форму оплати» «ІНШЕ»?
10:45 - Дохід гіг-спеціаліста у вигляді щорічної оплачуваної перерви не є складовою винагороди за виконані ним роботи (надані послуги): оподаткування ПДФО
10:42 - Задекларували дохід, отриманий у 2024 році – своєчасно сплатіть податкові зобов’язання!
10:38 - Понад 1,4 млрд грн єдиного податку – надходження від ФОПів до місцевих бюджетів Дніпропетровщини
10:35 - В Україні на третину поменшало втрат мобільних телефонів
10:34 - Майже на 82 відс. збільшились надходження від платників частини чистого прибутку до місцевих бюджетів Дніпропетровщини
10:24 - Україна успішно пройшла скринінг ЄС за розділом «Підприємництво та промислова політика»
10:19 - Ломбарду видано ліцензію на здійснення валютних операцій
10:15 - Курс валют на 30 квітня: скільки коштують долар та євро
09:49 - "Трамп ударив Путіна по зубах": економіка московія більше не зростає – The Economist
09:48 - Ключові рішення НКЦПФР від 29.04.2025
09:43 - Єдиний внесок: до державних цільових фондів від платників Дніпропетровщини надійшло понад 10,1 млрд гривень
09:42 - Рентна плата за користування надрами
09:40 - Зустріч податківців Дніпропетровщини з представниками ЄБА: діалог, що відкриває можливості
09:39 - Дніпропетровщина: консультаційний центр - надійний помічник у питаннях реєстрації податкових накладних
09:33 - Аварійні роботи з ліквідації наслідків російської атаки на газову інфраструктуру Черкащини тривають
09:25 - На пункті пропуску "Устилуг-Зосин" частково обмежуватимуть проїзд
09:00 - Чому зростає імпорт і хто винен
09:00 - Китай створив таємний список товарів США, які не обкладатимуться 125% митом
08:00 - Професійна освіта завтрашнього дня. Які зміни відчують роботодавці?
07:35 - Фінансовий астрологічний прогноз на 30.04.2025
00:00 - Новини від Міністерства енергетики України
21:00 - Новини 29 квітня: деталі блекаута на Піренеях та претензії НБУ до Порошенка
20:55 - Союзна московії Буркіна-Фасо продовжить націоналізовувати шахти Заходу
20:50 - Неуверенные в завтрашнем дне потребители США
20:35 - В Україні змінилися правила перевірок молочних продуктів на ринках


Більше новин

ВалютаКурс
Алжирський динар0.31402
Австралійський долар26.6097
Така0.34069
Канадський долар30.0095
Юань Женьміньбі5.715
Чеська крона1.8968
Данська крона6.335
Гонконгівський долар5.3574
Форинт0.117018
Індійська рупія0.48743
Рупія0.0024798
Новий ізраїльський шекель11.4731
Єна0.29124
Теньге0.081259
Вона0.028955
Ліванський фунт0.000464
Малайзійський ринггіт9.6052
Мексиканське песо2.1177
Молдовський лей2.4088
Новозеландський долар24.731
Норвезька крона4.004
Саудівський ріял11.0807
Сінгапурський долар31.7264
Донг0.0015989
Ренд2.2412
Шведська крона4.3092
Швейцарський франк50.3448
Бат1.24412
Дирхам ОАЕ11.316
Туніський динар13.9119
Єгипетський фунт0.8181
Фунт стерлінгів55.6364
Долар США41.5647
Сербський динар0.40337
Азербайджанський манат24.4469
Румунський лей9.4992
Турецька ліра1.0814
СПЗ (спеціальні права запозичення)56.4037
Болгарський лев24.1782
Євро47.284
Ларі15.1144
Злотий11.0733
Золото137549.65
Срібло1380.61
Платина41261.28
Паладій39461.94

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