This semester I managed homework differently. On Bitbucket, I created a repository containing the homework specifications and some autograders. Each student made a private fork of my repository, inheriting permissions so that I could access the fork when a homework was submitted. When students commit a changeset, they include a brief description of the changes […]
CS 245 has officially closed. I offer some reflection. Bitbucket We used Bitbucket for the first time ever to distribute and submit homework assignments. I wish I could say I learned how to overcome problems that my students ran into, but I can’t. Mostly issues seemed to stem from failing to follow the pull-code-commit-push workflow. […]
Agenda what ?s review wrap up Topics object-oriented programming inheritance polymorphism (subtype) polymorphism (parametric/generics/templates) dynamic dispatch, virtual functions garbage collection grammars, lexing, parsing, interpretation higher-order functions lambdas/anonymous functions filter/map/fold immutability lazy evaluation memoization reflection dynamic and duck typing Haiku
Agenda what ?s review Topics hashing maps linked structures vs. array structures trees binary search trees heaps and priority queues stacks queues When Will I Use This Stuff? All the time, none of the time, or some of the time. Check out http://programmers.stackexchange.com/questions/102041/why-are-data-structures-so-important-in-interviews. Donald Knuth, in Structured Programming with Goto Statements: Programmers waste enormous amounts of time […]
Agenda what ?s static vs. dynamic vs. duck multiple inheritance traits/mixins Code sum.rkt duck.rb mixin.rb Haiku
Agenda what ?s getting the time of day from a time server get the time of sunset from OpenWeatherMap getting rhymes from RhymeBrain a chat client Code Timestamp.java WhetherWeather.java Rhymer.java MSYahAIM.java Haiku
Agenda what ?s a testing framework in Ruby checking for correct overrides in Java handling wild calls in Ruby Code Certain.rb Usurps.java Supertype.java Subtype.java UsurpsCheck.java weather.json ezserial.rb Haiku
Agenda what ?s what does this do? easier concurrency without side effects call by value, name, need the dangers of the C preprocessor delayed/lazy evaluation promises in Ruby futures in Java What Does This Do? Code compromise.rb Thunk.java Future.java Main.java Haiku
Agenda what ?s think about this priority queues TODO Go visit CERCA today from 2-4 PM on 3rd floor Davies. Talk to some student researchers about their projects. What’s your reaction? Extra credit 1/4 sheet. Think About This Code NumberOfCores.java MaxHeap.java Circle.java Circles.java Haiku
Agenda what ?s program this the benefits of no side-effects memoization in Haskell memoization in Ruby TODO Read about tool selection and the lack of silver bullets: http://blog.awe.sm/2012/12/10/how-to-choose-the-right-tool-for-the-job-awe-sms-language-journey and http://frankchimero.com/blog/no-new-tools. Read on laziness in D: http://dlang.org/lazy-evaluation.html. Go to CERCA (Ojibwe Ballroom, 3rd floor Davies) and talk to some student researchers. Pick one or two or three. 1/4 sheet. Program […]