<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ossus on Coding braindump</title><link>https://dev-initely.me/ossu/</link><description>Recent content in Ossus on Coding braindump</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 06 Nov 2018 20:37:00 +0100</lastBuildDate><atom:link href="https://dev-initely.me/ossu/index.xml" rel="self" type="application/rss+xml"/><item><title>Programming Languages Part C</title><link>https://dev-initely.me/ossu/prog-lang-c/</link><pubDate>Tue, 06 Nov 2018 20:37:00 +0100</pubDate><guid>https://dev-initely.me/ossu/prog-lang-c/</guid><description>&lt;p&gt;&lt;em&gt;Unfortunately, the homework files have been lost - maybe I will go back and revisit them some day&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="d41d8c"&gt;&lt;a href="https://dev-initely.me/ossu/prog-lang-c-w1/" rel=""&gt;Week 1&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id="d41d8c"&gt;&lt;a href="https://dev-initely.me/ossu/prog-lang-c-w2/" rel=""&gt;Week 2&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id="d41d8c"&gt;&lt;a href="https://dev-initely.me/ossu/prog-lang-c-w3/" rel=""&gt;Week 3&lt;/a&gt;&lt;/h2&gt;</description></item><item><title>Programming Languages Part B</title><link>https://dev-initely.me/ossu/prog-lang-b/</link><pubDate>Wed, 30 May 2018 22:17:00 +0200</pubDate><guid>https://dev-initely.me/ossu/prog-lang-b/</guid><description>&lt;ul&gt;
&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &amp;ldquo;ACTIVE&amp;rdquo; &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2018-05-30 Wed 22:17]&lt;/span&gt;&lt;/span&gt;
Uses cracket to introduce functional programming concepts. This course is a pretty advanced course on functional programming. It uses SML in its Part A and mostly reverts to cRacket in part B.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="week-1"&gt;&lt;span class="org-todo done DONE"&gt;DONE&lt;/span&gt; Week 1&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2018-09-08 Sat 20:13]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Not yet used org-mode to take notes&lt;/p&gt;
&lt;h2 id="week-2"&gt;&lt;span class="org-todo done DONE"&gt;DONE&lt;/span&gt; Week 2&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2018-08-13 Mon 00:34]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="reading"&gt;&lt;span class="org-todo done DONE"&gt;DONE&lt;/span&gt; Reading&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;State &amp;ldquo;DONE&amp;rdquo; from &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2018-08-13 Mon 00:34]&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="datatype-programming-w-o-datatypes"&gt;Datatype-Programming w/o datatypes&lt;/h4&gt;
&lt;p&gt;In ML we used datatype bindings to define own one-of types, including recursive
dataypes for tree-based data. This introduces a new type into the static
environment along with constructors. cRacket - as a dynamically typed language -
has nothing directly corresponding to dataype-bindings, but it does support the
same sort of data definitions and programmign.&lt;/p&gt;</description></item><item><title>From NAND to Tetris I</title><link>https://dev-initely.me/ossu/nand2tetris/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dev-initely.me/ossu/nand2tetris/</guid><description>&lt;p&gt;The course has a very ambitious agenda, namely to build a full-purpose computer from scratch by using a Hardware Simulator, gate logic and first principles. It is one of the courses that I have enjoyed the most. When learning programming, I sometimes felt that there was a significant gap: Basically, programming starts at a very high level of abstraction. All the chipsets etc. are abstracted away from. But what does it really mean when we say that a computer only understands 0s and 1s? This course aims at filling this gap. It is highly entertaining and enjoyable with well-thought out, difficult projects, that are a lot of fun.&lt;/p&gt;</description></item><item><title>From NAND to Tetris II</title><link>https://dev-initely.me/ossu/nand2tetris2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dev-initely.me/ossu/nand2tetris2/</guid><description>&lt;p&gt;Continuation of nand2tetris. in part 1 we have built the basic building blocks of a general purpose machine. We have gone from simple and more complicated logic gates to an actual running program, several programs in fact. starting from that we have built a von-Neumann-architecture. We have finished the last course by building an assembler. So basically we have gone from a simple hardware solution which is able to detect zeros and ones; finally we want to translate the programmer&amp;rsquo;s ideas into machine language.
In this part of the course we treat the hack computer as an abstraction, we do not care about the underlying hardware solution. In this course, we actually think more &amp;rsquo;top-down&amp;rsquo;.
We start with the human programmer and her ideas about how to implement them. We introduce &amp;lsquo;jack&amp;rsquo;, which is an easy programming language.&lt;/p&gt;</description></item><item><title>Open Source Society University (OSSU)</title><link>https://dev-initely.me/ossu/open-source-society-university/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dev-initely.me/ossu/open-source-society-university/</guid><description>&lt;p&gt;The OSSU curriculum is a &lt;strong&gt;complete education in computer science&lt;/strong&gt; using online materials. It&amp;rsquo;s not merely for career training or professional development. It&amp;rsquo;s for those who want a proper, &lt;em&gt;well-rounded&lt;/em&gt; grounding in concepts fundamental to all computing disciplines, and for those who have the discipline, will, and (most importantly!) good habits to obtain this education largely on their own, but with support from a worldwide community of fellow learners.&lt;/p&gt;</description></item><item><title>Programming Languages C - Week 1</title><link>https://dev-initely.me/ossu/prog-lang-c-w1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dev-initely.me/ossu/prog-lang-c-w1/</guid><description>&lt;h2 id="ruby-features-most-interesting-for-a-pl-course"&gt;Ruby Features most interesting for a PL Course&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ruby is &lt;em&gt;purely object-oriented&lt;/em&gt;, i.e. all values are objects.&lt;/li&gt;
&lt;li&gt;Ruby is &lt;em&gt;class-based&lt;/em&gt;; every object is an instance of a class. Not all oo
languages are class-based, e.g. Java.&lt;/li&gt;
&lt;li&gt;Ruby has &lt;em&gt;mixins&lt;/em&gt;; which strike a compromise between multiple inheritance
(like in C++) and interfaces (Java). Every Ruby class has one superclass but
can include any number of mixins, which can define methods.&lt;/li&gt;
&lt;li&gt;Ruby is &lt;em&gt;dynamically typed&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Ruby has many dynamic features&lt;/li&gt;
&lt;li&gt;Ruby has convenient &lt;em&gt;reflection&lt;/em&gt;: Built-in methods make it easy to discover at
run-time properties about objects.&lt;/li&gt;
&lt;li&gt;Ruby has blocks and closures: It is rare in Ruby to use an explicit loop since
collection classes like &amp;lsquo;ARRAY&amp;rsquo; define so many useful iterators.&lt;/li&gt;
&lt;li&gt;Ruby is a scripting language: It means the language is engineered towar making
it easy to write short programs, providing convenient access to manipulating
files and strings with less concern for performance. Ruby does not require you
to declare variables before using them.&lt;/li&gt;
&lt;li&gt;Ruby is popular for web applications; particularly with the Ruby on Rails framework.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="rules-of-class-based-oop"&gt;Rules of Class-Based OOP&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;All values are references to &lt;strong&gt;objects&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Programming Languages C - Week 2</title><link>https://dev-initely.me/ossu/prog-lang-c-w2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dev-initely.me/ossu/prog-lang-c-w2/</guid><description>&lt;h2 id="oop-vs-dot-functional-decomposition"&gt;OOP vs. Functional Decomposition&lt;/h2&gt;
&lt;p&gt;When implementing operations for a small expression language, we can compare OOP
vs. functional decomposition. In functional programming, we typically break
programs down into functions that perform some operation. in OOP we typically
break programs down into classes that give behavior to some kind of data.
Consider the following 2D matrix for a small expression language:&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;&lt;/th&gt;
					&lt;th&gt;eval&lt;/th&gt;
					&lt;th&gt;toString&lt;/th&gt;
					&lt;th&gt;hasZero&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Int&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Add&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Negate&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="functional-approach"&gt;Functional Approach&lt;/h3&gt;
&lt;p&gt;In functional languages, the standard style is do to the following:&lt;/p&gt;</description></item><item><title>Programming Languages C - Week 3</title><link>https://dev-initely.me/ossu/prog-lang-c-w3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dev-initely.me/ossu/prog-lang-c-w3/</guid><description>&lt;p&gt;A key source of expressiveness in ML&amp;rsquo;s type system (not rejecting too many
programs that do nothing wrong and programmers are likely to write) is
&lt;strong&gt;parametric polymorphism&lt;/strong&gt;, also known as &lt;strong&gt;generics&lt;/strong&gt;. We should also study static
types of OOP languages, such as Java. The main thing we want to prevent is
&amp;ldquo;method missing&amp;rdquo; errors, i.e. sending a message to an object that has no method
for that message. The source of type-system expressiveness most fundamental to
OOP is &lt;strong&gt;subtype polymorphism&lt;/strong&gt; also known as &lt;strong&gt;subtyping&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Programming Languages Part A</title><link>https://dev-initely.me/ossu/prog-lang-a/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dev-initely.me/ossu/prog-lang-a/</guid><description>&lt;p&gt;CLOSE&lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;[2018-04-05 Thu 00:07]&lt;/span&gt;&lt;/span&gt;
Uses lisp and cracket to introduce functional programming concepts - no further notes.&lt;/p&gt;</description></item></channel></rss>