Introduction to Systematic Program Design - Part 1 [4494]


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


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

Stock prices rising
Investors feeling hopeful
Bull market prevails

- Fin.Org.UA

Новини

00:00 - Новини від Міністерства енергетики України
22:23 - 38-мі роковини аварії на Чорнобильській АЕС: Руслан Стрілець взяв участь у офіційних заходах під головуванням Президента Володимира Зеленського
21:57 - Затверджено Консолідовану фінансову звітність Національного банку України за 2023 рік та розподіл прибутку
21:00 - Новини 26 квітня: Сольського звільнили під заставу, Кабмін зберіг чинний тариф на електрику для населення
20:52 - Остін: США виділяють 6 млрд дол на замовлення зброї для України
20:49 - Здійснено черговий крок у запровадженні європейських вимог до капіталу банків і банківських груп
20:40 - Мінфін оновив дані про фінансування держбюджету від початку великої війни: хто став найбільшим донором 
20:35 - Два топменеджери Ощадбанку перейшли в правління "Сенс Банку"
20:10 - Квартири колаборанта Сальдо і росолігарха Шелкова в Одесі вдруге виставили на аукціон
19:58 - Рівень розрахунків населення за газ становить 95% – Чернишов
19:47 - У поліції Києва розповіли про причини обшуків у "Київтеплоенерго"
19:27 - З початку року від міжнародних партнерів надійшло близько 12 мільярдів доларів
19:14 - Захист ТЕЦ, ТЕС і ГЕС ніколи не відносився до відповідальності Мінінфраструктури – Кубраков
19:07 - Мінекономіки: Презентовано концепцію проекту Національної Стратегії розвитку сфери інтелектуальної власності до 2030 року
18:50 - Прем’єр-міністр зустрівся з очільницею МЗС Латвії
18:47 - У Києві через ремонт обмежать рух транспорту на кількох вулицях 
18:40 - У Центробанку московія стверджують, що конфіскація заморожених активів не вплине на фінстабільність московії
18:20 - Підприємці Харківщини зможуть отримати вдвічі більший грант від держави на розвиток
18:14 - World IP Day: презентовано концепцію проекту Національної Стратегії розвитку сфери інтелектуальної власності до 2030 року
17:49 - Суд зупинив ліцензію "Нафтогазу" на розподіл газу на Черкащині: компанія подала апеляцію
17:45 - Підсумки торгів цінними паперами на Українській біржі за 26.04.2024
17:44 - Денис Башлик: Ринок земель в Україні здатен впоратися з будь-якими викликами, завдяки чітко визначним передумовам
17:42 - Чи насправді буде обмежена робота онлайн-казино після Указу Президента?
17:37 - Японія продовжуватиме підтримку українського енергосектору: Зустрічі Германа Галущенка з представниками Уряду Японії
17:32 - Затверджено порядок організації психіатричної допомоги особам, стосовно яких передбачається застосування примусових заходів медичного характеру
17:29 - Продовжено строки на подання заявки для розрахунку обсягу квот щодо діяльності з культивування рослин роду коноплі — рішення уряду
17:28 - Японія продовжуватиме підтримку українського енергосектору: зустрічі Германа Галущенка з представниками Уряду Японії
17:26 - Уряд ухвалив постанову щодо строків державної атестації наукових установ
17:20 - Національний банк України анонсував низку кроків з валютної лібералізації
17:20 - Ухвалено закон щодо врахування страхового стажу закордоном для пенсії в Україні


Більше новин

ВалютаКурс
Австралійський долар25.8816
Канадський долар28.9972
Юань Женьміньбі5.4649
Чеська крона1.6867
Данська крона5.691
Гонконгівський долар5.0584
Форинт0.108183
Індійська рупія0.47511
Рупія0.0024423
Новий ізраїльський шекель10.4009
Єна0.25254
Теньге0.089457
Вона0.028796
Мексиканське песо2.2942
Молдовський лей2.22
Новозеландський долар23.5629
Норвезька крона3.5997
московський рубль0.43076
Сінгапурський долар29.0888
Ренд2.0991
Шведська крона3.6272
Швейцарський франк43.4084
Єгипетський фунт0.8269
Фунт стерлінгів49.5494
Долар США39.6015
Білоруський рубль14.3943
Азербайджанський манат23.2923
Румунський лей8.5282
Турецька ліра1.218
СПЗ (спеціальні права запозичення)52.1706
Болгарський лев21.6995
Євро42.4409
Злотий9.8181
Алжирський динар0.29133
Така0.35452
Вірменський драм0.099159
Домініканське песо0.66115
Іранський ріал0.00092851
Іракський динар0.029769
Сом0.43587
Ліванський фунт0.000436
Лівійський динар8.0586
Малайзійський ринггіт8.2657
Марокканський дирхам3.8465
Пакистанська рупія0.14042
Саудівський ріял10.3982
Донг0.0015718
Бат1.07729
Дирхам ОАЕ10.6188
Туніський динар12.4776
Узбецький сум0.0030882
Новий тайванський долар1.221
Туркменський новий манат11.1421
Сербський динар0.36025
Сомоні3.561
Ларі14.9113
Бразильський реал7.2282
Золото92856.01
Срібло1091.89
Платина36302.7
Паладій38449.1

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

ТікерOpenMaxMinCloseVolume
2262861046.391046.391046.391046.391307987.50
2276561080.091080.091080.091080.09237619.80
2288111063.621063.621063.621063.6237226.70
229025985.42985.42985.42985.42782423.48
229470921.25921.25921.25921.25644875.00
2302621060.181060.181060.181060.18106018.00
CRSR061024.551025.321024.551025.3213328.39
FCOM011055.931055.931055.931055.9335901.62
FSTF021021.481022.251021.481022.2533733.48
USGK78454545454545454519657125.00

Дані за 26.04.2024