diff --git a/.gitignore b/.gitignore
index f4d65a1e..c4f83c5d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,6 @@
+*~
peerevals/
grades/
howtoopenshift-hfoss.txt
+hfossenv/
+*.patch
\ No newline at end of file
diff --git a/LICENSE.md b/LICENSE.md
deleted file mode 100644
index 57bc88a1..00000000
--- a/LICENSE.md
+++ /dev/null
@@ -1,202 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
diff --git a/README.md b/README.md
index 9515d8c7..8937a25b 100644
--- a/README.md
+++ b/README.md
@@ -1,106 +1,17 @@
-hfoss
-==========
+# hfoss
-[](https://travis-ci.org/decause/hfoss)
+This is the content repository for the [RIT](https://rit.edu) [Department of Interactive Games and Media](http://igm.rit.edu)
+__Humanitarian Free/Open Source Software Course__ (HFOSS). This course is a pre-requisite for advanced courses in [Free and Open Source Software at RIT](https://www.rit.edu/gccis/igm/free-open-source-software-foss-mn) [(see also)](http://www.rit.edu/news/story.php?id=50590).
-This is the content repository for the RITDepartment of Interactive Games and Media
-Humanitarian Free/Open Source Software Course. This course is a
-required course that is part of the RIT Academic Minor in
-Free/Open Source Software and FreeCulture (a first at any University in the
-United States!) It contains course specific static content, and should be used
-in conjunction with the ofCourse courseware, distributed
-at https://pypi.python.org/pypi/ofcourse
+The directory [ofcourse-content](ofcourse-content) contains that subset of course-specific content served by an
+instance of the [ofCourse](http://github.com/FOSSRIT/ofCourse) courseware, distributed
+and maintained separately at [https://pypi.python.org/pypi/ofcourse](https://pypi.python.org/pypi/ofcourse).
-INSTALLATION
-============
+The [assets](assets) directory contains local copies of **open educational resources** ([Creative Commons](https://wiki.creativecommons.org/wiki/What_is_OER%3F), [Wikipedia](https://en.wikipedia.org/wiki/Open_educational_resources),
+[opensource.com](https://opensource.com/education/13/4/guide-open-source-education)) either used directly by the course or useful as references or for further
+reading. It also includes binary objects (pictures, video) used in the course (eg, the course wiki).
-Start by forking the repository on Github. Point your browser to
-http://github.com/decause/hfoss and then click the "Fork" button in the
-top right corner of the page.
+The [docs](docs) directory may eventually contain course content (possibly
+originating from the course wiki) served via [Github Pages](https://pages.github.com/) or
+another, similar static content hosting system.
-Setting up your environment
----------------------------
-
-Before you can do anything with this (run the webserver locally, or any of the
-scripts) you'll need to setup and activate a python virtualenv. Run the
-following at the command prompt...
-
-On Linux/Mac OS X
------------------
-
-If you don't have virtualenv installed yet, try::
-
- $ sudo easy_install virtualenv virtualenvwrapper
-
-If you're using a distro like Fedora or Ubuntu, you should try this instead::
-
- Fedora:
- $ sudo yum install python-virtualenv
-
- Ubuntu/Debian:
- $ sudo apt-get install python-virtualenv
-
-Once you have virtualenv installed, you will install be able to run::
-
- $ cd code
-
- $ git clone git@github.com:YOUR_USERNAME/hfoss.git
-
- $ virtualenv --no-site-packages -p python2 hfossenv
-
- $ . hfossenv/bin/activate
-
-On Windows
-----------
-
-At the windows command prompt::
-
- $ virtualenv --no-site-packages -p python2 hfossenv
-
- $ hfossenv/Scripts/activate.bat
-
-In msysGit or git-bash::
-
- $ git clone git@github.com:YOUR_USERNAME/hfoss.git
-
-Back in the windows command prompt::
-
- $ cd hfoss
-
-
-Installing Ofcourse
--------------------
-
-Once you've forked the repo, and activated your virual environment, you can pip
-install the courseware that serves up the content of the course. Simply run::
-
- $ pip install ofcourse
-
-
-Running Ofcourse
-----------------
-
-Once you've pip installed Ofcourse, you can then type::
-
- $ ofcourse run
-
-Which should run the courseware at http://127.0.0.1:5000
-
-
-LICENSES
-========
-
-Unless otherwise noted, original lectures and course materials created
-by the Instructor within this repository are licensed Creative Commons
-Attribution-Share Alike 4.0 International.
-
-Unless otherwise noted, original source code created by the Instructor within
-this repository is licensed Apache 2.0.
diff --git a/assets/OLPCKidsAdja2.odp b/assets/OLPCKidsAdja2.odp
new file mode 100644
index 00000000..6198e1d4
Binary files /dev/null and b/assets/OLPCKidsAdja2.odp differ
diff --git a/assets/OLPCKidsB.odp b/assets/OLPCKidsB.odp
new file mode 100644
index 00000000..f9f017cd
Binary files /dev/null and b/assets/OLPCKidsB.odp differ
diff --git a/assets/OLPCKidsB.ppt b/assets/OLPCKidsB.ppt
new file mode 100644
index 00000000..c5eff90d
Binary files /dev/null and b/assets/OLPCKidsB.ppt differ
diff --git a/assets/g-b4-gh-2018.pdf b/assets/g-b4-gh-2018.pdf
new file mode 100644
index 00000000..59785b92
Binary files /dev/null and b/assets/g-b4-gh-2018.pdf differ
diff --git a/assets/g-b4-gh-2020.odp b/assets/g-b4-gh-2020.odp
new file mode 100644
index 00000000..5ee4ebf6
Binary files /dev/null and b/assets/g-b4-gh-2020.odp differ
diff --git a/assets/git-conflict-demo.webm b/assets/git-conflict-demo.webm
new file mode 100644
index 00000000..024d57a4
Binary files /dev/null and b/assets/git-conflict-demo.webm differ
diff --git a/assets/git-first-commit-and-revision.webm b/assets/git-first-commit-and-revision.webm
new file mode 100644
index 00000000..524fffb2
Binary files /dev/null and b/assets/git-first-commit-and-revision.webm differ
diff --git a/assets/how-constructivism-changed-education.html b/assets/how-constructivism-changed-education.html
new file mode 100644
index 00000000..761102a6
--- /dev/null
+++ b/assets/how-constructivism-changed-education.html
@@ -0,0 +1,174 @@
+
Knowledge is a process of discovery: how constructivism changed education
+
+
+
+
+ According to constructivists, we truly understand something when we filter it through our senses and interactions.
+ from shutterstock.com
+
+
+
+Luke Zaphir, The University of Queensland
+
+
This is the second of two essays exploring key theories – cognitive load theory and constructivism – underlying teaching methods used today.
+
+
+
+
Constructivism is an educational philosophy that deems experience as the best way to acquire knowledge.
+
+
We truly understand something – according to a constructivist – when we filter it through our senses and interactions. We can only understand the idea of “blue” if we have vision (and if we aren’t colour blind).
+
+
Constructivism is an education philosophy, not a learning method. So while it encourages students to take more ownership of their own learning, it doesn’t specify how that should be done. It is still being adapted to teaching practice.
+
+
The philosophy underpins the inquiry-based method of teaching where the teacher facilitates a learning environment in which students discover answers for themselves.
One of the earliest proponents of constructivism was Swiss psychologist Jean Piaget, whose work centred around children’s cognitive development.
+
+
Piaget’s theories (popularised in the 1960s) on the developmental stages of childhood are still used in contemporary psychology. He observed that children’s interactions with the world and their sense of self corresponded to certain ages.
+
+
For instance, through sensations from birth, a child has basic interactions with the world; from two years old, they use language and play; they use logical reasoning from age seven, and abstract reasoning from age eleven.
+
+
+
+
+ Jean Piaget observed children discover the world in stages that correspond with their age.
+ from shutterstock.com
+
+
+
+
Before Piaget, there had been little specific analyses on the developmental psychology of humans. We understood that humans became more cognitively sophisticated as they aged, but not exactly how this occurred.
+
+
Piaget’s theory was further developed by his contemporary, Lev Vygotsky (1925-1934), who saw all tasks as fitting into:
+
+
+
tasks we can do on our own
+
tasks we can do with guidance
+
tasks we can’t do at all.
+
+
+
There’s not a lot of meaningful learning to be made in the first category. If we know how to do something, we don’t gain too much from doing it again.
+
+
Similarly, there’s not much to be gained from the third category. You could throw a five year old into a calculus class run by the most brilliant teacher in the world but there just isn’t enough prior understanding and cognitive development for the child to learn anything.
+
+
Most of our learning occurs in category two. We’ve got enough prior knowledge to make sense of the topic or task, but not quite enough to fully comprehend it. In developmental psychology, this idea is known as the zone of proximal development – the place between our understanding and our ignorance.
+
+
Using the zone for learning
+
+
Imagine asking ten-year-old students to go about adding every number from 1 to 100 (1 + 2 + 3 + 4 + 5 and onwards). They could theoretically do this by brute force addition which will likely bore and frustrate them.
+
+
A constructivist inspired teacher might instead ask: “is there a faster way of doing it?” and “is there a pattern of numbers?”
+
+
With a bit of help, some students might see that every number pairs with a corresponding number to add to 101 (1 + 100, 2 + 99, 3 + 98). They end up with 50 pairs of 101, for a much easier, faster sum of 50 x 101.
+
+
The pattern and easy multiplication might not have come intuitively (or even at all) to most students. But facilitation by the teacher pushes their existing knowledge into a meaningful learning experience – using a completely mundane problem. It then becomes a process of discovery rather than monotonous addition.
+
+
+
+
+ In a group, each student contributes their individual capabilities to solve a given problem.
+ from shutterstock.com
+
+
+
+
Medical students began using constructivist pedagogies in US and Australian universities in the 1960s. Instead of teachers showing students exactly how to do something and having them copy it (known as explicit instruction), tutors prompted students to form hypotheses and directed them to critique one another.
Learning methods based on constructivism primarily use group work. The emphasis is on students building their understanding of a topic or issue collaboratively.
+
+
Imagine a science class exploring gravity. The question of the day is: do objects drop at different speeds? The teacher could facilitate this activity by asking:
+
+
+
“what could we drop?”
+
“what do you think will happen if we drop these two objects at the same time?”
+
“how could we measure this?”
+
+
+
Then, the teacher would give students the chance to conduct this experiment themselves. By doing this, teachers allow students to build on their individual strengths as they discover a concept and work at their own pace.
+
+
+
+
+ Do objects drop at different speeds?
+ from shutterstock.com
+
+
+
+
Experiments in science class, excursions to cultural landmarks in history class, acting out Shakespeare in English – these are all examples of constructivist learning activities.
+
+
What’s the evidence?
+
+
Constructivist principles naturally align with what we expect of teachers. For instance, teacher professional standards require them to build rapport with students to manage behaviour, and expert teachers tailor lessons to students’ specific cultural, social and even individual needs.
+
+
Explicit instruction is still appropriate in many instances – but the basic teaching standard includes a recognition of students’ unique circumstances and capabilities.
Constructivism can be seen as merely a descriptive theory, providing no directly useful teaching strategies. There are simply too many learning contexts (cultures, ages, subjects, technologies) for constructivism to be directly applicable, some might say.
+
+
And it’s true constructivism is a challenge. It requires creative educational design and lesson planning. The teacher needs to have an exceptional knowledge of the subject area, making constructivist approaches much harder for primary school teachers who have broader general knowledge.
A major challenge for constructivism is the current outcomes-focused approach to learning. Adhering to a curricular requirement for assessment at certain times (such as end-of-term tests) takes the focus away from student-centred learning and towards test preparation.
+
+
Explicit instruction is more directly useful for teaching to the test, which can be an unfortunate reality in many educational contexts.
+
+
An an education philosophy, constructivism has a lot of potential. But getting teachers to contextualise and personalise lessons when there are standardised tests, playground duty, health and safety drills, and their personal lives, is a big ask.
Luke Zaphir, Researcher for the University of Queensland Critical Thinking Project; and Online Teacher at Education Queensland's IMPACT Centre, The University of Queensland
+
+The other night I arrived early at the San Francisco Brewing Company in anticipation of the San Francisco Linuxstammtisch. Passing the time by drinking IPAs and chatting with the bartender, I ran across two greybeards from Oregon who were in the city for MacWorld and had just wandered into the pub for a brew.
+
+
+
+
+
+
+They asked me what I did for a living, and I told them that I work for a Linux company. This piqued their interest, and they asked me what Linux was and where it came from. I pondered the question for a moment, wondering how far I should go back. Should I tell them about the Finnish graduate student named Linus, the MIT hacker named Richard, or should I tell them about Marshall Kirk McKusick and his contemporaries?
+
+
+
+
+
+
+Realizing that I was probably about an hour early for the event and that I could probably swing a few free ales out of the story, I decided to go all the way back--to 1969.
+
+
+
+
+
+
+
+
+
Nick Moffitt's $7 History of Unix
+
+
+
+
+
+
+What follows is a rather embellished version of Unix history, and the reader might do well to read the following documents:
+
+
+In fact, this document serves more as an outline than anything else. Errors in grammar and spelling are par for the course at this point.
+
+
+
+
+
+
+
+The year 1969 has often been heralded as the peak of good times in the 20th Century (at least for America). The main significance that it has for hackers, however, is that 1969 was the year that Unix was born.
+
+
+
+
+
+
+AT&T Bell Labs in New Jersey had just pulled the plug on their contribution to the Multics system, leaving a number of competent OS hackers floating in a void. Three of them (Ken Thompson, Dennis Ritchie, and J.F. Ossanna) set about trying to revive the community and group-hack spirit that had been created by the project. Ken Thompson had come up with an idea for a really cool filesystem, and the three of them carried on the momentum, hacking an OS at least on paper.
+
+
+
+
+
+
+Bell Labs wasn't quick to oblige them, however. Multics was one of the biggest hogs for system resources and had grown out of control during its development there. The administration didn't want to see another Multics happen so long as they were alive. All requests for a computer to hack an OS on were denied.
+
+
+
+
+
+
+Gradually, the ex-Multics hackers got used to the idea that they weren't going to be allowed to keep the OS development ball rolling, and went on with their assigned projects. Quite by accident, however, they were granted use of a PDP-7 (a tiny machine, by their standards) to work with.
+
+
+
+
+
+
+In his spare time, Ken Thompson worked on this machine to allow him to play his favorite Multics space travel game. Of course, a game needs to be able to manipulate files for scores and data and such, so he and Dennis Ritchie wrote a tiny kernel to allow use of his filesystem.
+
+
+
+
+
+
+After a while, the system running on the PDP-7 (which was considered little more than a glorified graphics terminal for the larger machines) developed into the very project that Thompson and Ritchie had been hoping to start up.
+
+
+
+
+
+
+
+Although it was not until well into 1970 that Brian Kernighan suggested the name Unix, in a somewhat treacherous pun on Multics, the operating system we know today was born. --Dennis Ritchie, 1979
+
+
+
+
+
+
+I should note that Digital Equipment Corporation named their first series of minicomputers Programmable Data Processors in order to sneak into IBM's market. DEC made quite sure that they were never referred to as computers as the prevailing opinion at the time was that IBM was the only reputable company that made computers!
+
+
+
+
+
+Soon enough, the Bell Labs hackers were given a PDP-11 in order to work on an office automation system. The machine was different enough from the PDP-7 that programs written on the 7 could not be run on the 11. It was a vastly different architecture, and required completely different programming techniques.
+
+
+
+
+
+They had, however, come up with a high-level programming language for the machines. This allowed them to write programs algorithmically, and let the details of a particular machine's architecture be handled by the compiler. So long as a compiler existed for the machine in question, it was trivial to recompile a program to run on it.
+
+
+
+
+
+The language Thompson and his colleagues created, C, was advanced enough to be easy to program in, but powerful enough to do most of what they would have done using assembly. They rewrote most of Unix in C, leaving only very few parts in assembly language. This was revolutionary at the time, as most people would have either created a PDP-7 emulator for the PDP-11, or they would have written a similar but completely new OS for the PDP-11. The idea that an operating system could be portable was almost unheard of.
+
+
+
+
+
+And so, Ken Thompson started mailing magnetic tapes with the Unix source code and utilities to his friends, labeling them simply "Love, ken". And so, in the early 1970's, a culture of Unix hackers sprang up, working with the Bell Labs source code.
+
+
+
+
+
+Around the mid 1970s, a professor by the name of John Lions at the University of New South Wales in Australia decided to use Unix to teach operating system architecture. Since Unix was written in C, it was much easier for a student to trace the flow of the code algorithmically. The university was, of course, fortunate enough to have a source license to Unix.
+
+
+
+
+
+AT&T had actually been rather forthcoming with licenses to Unix for academic use. According to The Cranberry Book, Unix version 6 (circa 1976) was free for Universities and version 7 cost $100 (government labs and commercial entities had to pay $21,000). This was partly due to a consent decree that forbade AT&T from selling software commercially.
+
+
+
+
+
+If you had taken Lions' class at the time, you would have bought two books (one red and one orange), they were the Source Code and Commentary on UNIX Level 6. The class became quite popular, and soon Bell Labs took notice.
+
+
+
+
+
+The curtain fell. AT&T halted publication of the books, as they gave away and discussed proprietary code from Bell Labs. As a consequence, those two books are now quite possibly the most photocopied works in computing history. They were passed around samizdat for a decade, and educated a whole generation of OS hackers. They're considered ridiculously obsolete nowadays, but they still hold amazing historical value. I myself have a copy in my desk at work, to remind me of the rebel spirit that founded Unix.
+
+
+
+
+
+Because we couldn't legally discuss the book in the University's operating systems class, several of us would meet at night in an empty classroom to discuss the book. It was the only time in my life that I was an active member of an underground.
--Peter B. Reintjes, on the back of the 1996 reprinting of Lions' Commentary
+
+
+
+
+
+
+
+
+The whole Unix culture was based upon sending C source code from person to person, adding features and fixing bugs as time went on. In many cases, the only documentation or distribution medium for a program or OS tool was the source code itself. It was assumed that everybody had a C compiler and the ability to compile the code properly. Portability was one of Unix's major strengths, and it would have been foolish to interfere with this by distributing binary-only versions of programs and utilities.
+
+
+
+Enter UC Berkeley in the late 1970's. UCB was a licensee of the Unix source code, and they used it extensively for research projects and development. Pretty much the whole of the Cal CS department was hacking Unix at one time or another during the late 1970's and early 1980's. The Computer Systems Research Group had hacked virtual memory into it in order to make the Franz LISP system more useful. This attracted the attention of the Defense Department, and they were soon working on DARPA projects for things like networking.
+
+
+
+
+
+In fact, TCP/IP and the socket model for network programming were invented on BSD (Berkeley Systems Distribution, the Computer Systems Research Group's name for Berkeley Unix). By the mid-1980's, the hacker's system of choice was a VAX (DEC's 32-bit version of the PDP-11) running BSD 4.x. BSD networking provided newer and faster ways to send source code over the Internet from one person to another. Large collaborative projects started, thanks to the ability for programmers from around the world to work together on one machine.
+
+
+
+
+
+Berkeley had improved Unix beyond anything Bell Labs had invented, and an East coast-West coast feud erupted versus proponents of ATT and BSD Unix. Many feel to this day that BSD is far more elegant and advanced than even SysVR4, the current version of ATT Unix that reports to have incorporated all the advances of BSD. Of course, AT&T no longer develops Unix. And as of this writing the rights to ATT Unix have been bounced around rather a lot, and have finally landed in the hands of Novell.
+
+
+
+
+
+Of course, Bell Labs noticed yet again that their source code was practically being given away, even though BSD was so wildly different from the Unix that had been given to Cal. A hideous tangle of lawsuits erupted, including anyone who had marketed a product based on the Net/1 or Net/2 release of 4.3BSD (which were available off the Internet for free in the early 1990's). AT&T sued the CSRG for BSD, and UC Berkeley sued various companies for not giving credit to UCB.
+
+
+
+
+
+The BSD wars, as they were later called, were the backdrop for the development of 4.4BSD, the last version to be distributed from UC Berkeley. The idea was to release two versions: an encumbered version, which required an AT&T license to run, and an unencumbered version that contained no proprietary code from Bell Labs Unix. In the end, the warring parties settled out of court, and 4.4BSD-Lite was released as the unencumbered and only legal release of BSD.
+
+
+
+
+
+Many modern operating systems are based on 4.4BSD-Lite, including FreeBSD, NetBSD, OpenBSD and BSDI. These remain (with the exception of BSDI) almost entirely under the BSD license, which permits redistribution in binary or source code form, so long as adequate credit is given to the University of California at Berkeley for code contributed by the CSRG.
+
+
+
+Parallel to the BSD/ATT feuds, there was a strong and dedicated culture of hackers at MIT. MIT's AI lab had long been a testbed for DEC's PDP series of computers, and they had written their own operating system for the PDP-10, called ITS. ITS stood for Incompatible Timesharing System, and it was optimized to within an inch of its life. The PDP-10 and ITS were inseparable. The MIT hackers had made use of every timing feature and minor flaw in the system, and their OS was arguably the best system ever written for a PDP-10.
+
+
+
+
+
+
+Of course, ITS wasn't portable by any stretch of the imagination. It was an operating system in the old school of development, and it died rather suddenly when DEC announced that they were discontinuing the PDP-10 and its descendants in favor of the PDP-11 and VAX systems.
+
+
+
+
+
+
+This was devastating to ITS culture, but the MIT hackers regrouped under the notion of building a machine that used the LISP language (popular mostly for Artificial Intelligence work) as its low-level assembly code. Unfortunately for the MIT AI lab, corporate interest in AI work increased in the late 1970's (spurred mostly by ridiculous claims from the Japanese electronics industry about its AI capabilities). Before too long, many of the public-domain projects worked on by the MIT hackers were the proprietary products of various corporations.
+
+
+
+
+
+
+One particularly loud holdout named Richard Stallman (often known by his initials and login name, RMS) refused to give in to the massive commercialization of his home community of hackers, and set about finding a way to preserve the freedom he'd lost through the buyout of the AI lab's talent. Having witnessed both the death of ITS due to its lack of portability and the death of the LISP machine due to corporate greed, he decided to give in to the Unix way and write a new operating system with two important features: it would be portable, and it would be licensed in such a way that it would always be the property of the free development community.
+
+
+
+
+
+
+It was a tradition at MIT to name projects using recursive acronyms (acronyms that can never be fully expanded). Stallman was notorious for writing an editor called EMACS, for example, which stood simply for "Editing MACroS". Another hacker wrote a similar program and called it EINE, for "EINE Is Not EMACS". EINE was then almost completely rewritten and then renamed ZWEI, for "ZWEI Was EINE Initially". Wordplay has always been at the heart of hacker culture, and RMS wanted to name his new OS in this spirit. He finally chose GNU, which stands for GNU's Not Unix (one of the first three-letter recursive acronyms, according to him).
+
+
+
+
+
+
+While almost everyone is grateful to RMS for starting the GNU project, and while GCC, GDB, and EMACS are widely regarded as the three most important development tools ever written (and yes, I am a vi user), RMS's most brilliant hack was the license he put these programs under. The GPL (GNU General Public License) has a syntax that uses the Copyright system to preserve the public availability and modification rights to program source code. The basic gyst of the GPL is that you must provide source code for any executable or binary release of a program under the GPL, and that you must put all derived works under the GPL as well.
+
+
+
+
+
+
+The project began in 1983 or so, and it really helped sustain the Unix hacker community during the "dark ages" that the 1980s proved to be for OS hacking. Proprietary versions of Unix were becoming popular in the corporate arena, and quite often these versions lacked source code (making them nearly unusable). Sun even distributed versions without C compilers! The personal computer was taking off, championed by proprietary software vendors Microsoft and IBM. If not for GNU, some argue, this disturbing trend of proprietary operating systems might have become the standard.
+
+
+
+
+
+
+The GNU project worked from the outside in. That is to say, they wrote utilities and programs to replace those run on other Unix systems, trusting that they'd be able to replace the low-level parts later. The project worked from the assumption that portable utilities that worked soon after release were far more useful than an operating system kernel that would soon have a suite of utilities to follow it. Most Unix systems today include many tools from the GNU project simply by default, even though they are not necessarily GNU systems!
+
+
+
+
+
+
+When it came time to write the kernel, however, the GNU project decided that it would be easier to split that up into two parts, and begin by writing the GNU kernel as a personality on the Mach microkernel. This proved to be more difficult than was anticipated, as development on Mach waned, and the technical details in writing a Mach personality were far more complex than those in writing a "monolithic" kernel.
+
+
+By 1991, GNU was a complete OS with everything but a kernel, BSD was locked in lawsuits (Though there was a project by the Jolitzes to write a kernel called 386BSD based on the Net/2 release, it eventually stalled during the settlement.), and Unix was widely regarded as a big proprietary system for diskless workstations and large-scale installations. At about this time, Linus Torvalds, a student in Helsinki, Finland, started a kernel inspired by a system known as Minix.
+
+
+
+
+
+
+Minix was written by Andrew Tannenbaum as a teaching tool for learning operating systems. His book centered on operating system design, and Minix was the focus of the book's planned curriculum. It wasn't very useful as a proper Unix system, but it provided insights into how to design a Unix-like kernel. Linus Torvalds was sick of the insufficiencies of Minix and the inability to get a free modem line into the University's Unix machines, so he set about writing his own kernel to fit under the GNU and BSD utilities.
+
+
+
+
+
+
+Linus and his colleague Lars wrote the kernel partly so that they could learn C. They posted the code up on the net, and instantly started receiving patches and fixes and enhancements to the code. It was all licensed under the GPL, so the developers were assured that their work would remain useful to anyone who wanted to use it. In many ways, the success of the kernel owes to Linus' humility and ability to ask for help as necessary.
+
+
+
+
+
+
+Eight years later, as I write this, Linus Torvalds is revered as one of the sharpest minds in OS design. His kernel has won him worldwide acclaim, and Linus even appeared on the cover of Forbes.
+
+
+
+Of course, the GNU project was a set of OS utilities without a kernel, and Linux was an OS kernel without a set of utilities. It was up to third parties to take the Linux kernel and bundle it with the requisite GNU and BSD utilities.
+
+
+
+
+
+
+One of the first widely popular distributions of the GNU and Linux combination was called SLS. SLS initially required that the user run Minix, and install GNU and Linux from there. SLS was quite popular, although it required prior experience with Unix in order to successfully install it.
+
+
+
+
+
+
+Soon after SLS came Slackware, compiled by Patrick Volkerding. Slackware made it incredibly easy to install a Linux-based GNU OS, and soon there were tons of people installing it on home machines. Slackware allowed the expert Unix hacks to install and tune their systems manually, while providing a nice script called "setup" that walked newer users through the install process.
+
+
+
+
+
+
+
+
+
diff --git a/assets/upstream-vs-origin.pdf b/assets/upstream-vs-origin.pdf
new file mode 100644
index 00000000..48728543
Binary files /dev/null and b/assets/upstream-vs-origin.pdf differ
diff --git a/assets/upstream-vs-origin.svg b/assets/upstream-vs-origin.svg
new file mode 100644
index 00000000..b5165688
--- /dev/null
+++ b/assets/upstream-vs-origin.svg
@@ -0,0 +1,82 @@
+
+
+
diff --git a/assignments.yaml b/assignments.yaml
deleted file mode 100644
index 232c0ee1..00000000
--- a/assignments.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
-# Example ofCourse assignments.yaml
-# Homework keys should be added as YAML
-# list elements.
-hw:
- - firstflight
- - litreview1
- - quiz1
- - litreview2
- - quiz2
- #- meetup1
- #- meetup2
- #- meetup3
- - bugfix
- - smoketest
- - teamprop1
- - commarchreport
- - commarchpreso
- - teamprop2
- - projteam
- - curriculum
- #- vidreview1
- #- vidreview2
- - finalrepo
diff --git a/attendance.py b/attendance.py
deleted file mode 100644
index 89b546b3..00000000
--- a/attendance.py
+++ /dev/null
@@ -1,138 +0,0 @@
-import sys
-import urllib2
-from BeautifulSoup import BeautifulSoup
-
-# List of the default months the HFOSS course runs
-# months = ["09", "10", "11", "12"]
-months = ["02", "03", "04", "05"]
-
-# Scrape the whole page
-page = urllib2.urlopen("http://linkybook.com/meetbot/rit-foss/2015/")
-
-bigSoup = BeautifulSoup(page)
-
-# Find all of the links
-links = bigSoup.findAll('a')
-html = []
-
-# Add only the links that end in .html to a list
-for link in links:
-
- type1 = link.getText().split('.')[-1]
- type2 = link.getText().split('.')[-2]
-
- # Filters out *.log.html links
- if "html" in type1 and "log" not in type2:
-
- # Gather date information about the log
- date = link.getText().split('.')[1]
- year = date.split('-')[0]
- month = date.split('-')[1]
- day = date.split('-')[2]
-
- # No user input
- if len(sys.argv) == 1:
- html.append(link)
-
- # Check user input for a specific year
- if len(sys.argv) == 2:
- if sys.argv[1] in year:
- html.append(link)
-
- # Check user input for a specific year and month
- elif len(sys.argv) == 3:
- if sys.argv[1] in year:
- if sys.argv[2] in month:
- html.append(link)
-
- # Check user input for a specific year, month, and day
- elif len(sys.argv) == 4:
- if sys.argv[1] in year:
- if sys.argv[2] in month:
- if sys.argv[3] in day:
- html.append(link)
-
-# Scrape each link for the attendance
-for link in html:
- page = urllib2.urlopen("http://linkybook.com/meetbot/rit-foss/" +
- str(link.getText().split('.')[1].split('-')[0]) +
- "/" + str(link.getText()))
- smallSoup = BeautifulSoup(page)
-
- # Find all the people who attended the meeting (class)
- people = smallSoup.findAll('h3')[-1].findAllNext('li')
- present = []
-
- # Populate a list of people who were present during rollcall
- for name in people:
- present.append(name.getText().split()[0].lower())
-
- # List of students in the class
- # classDict = {
- # "AgitatedBadger": [],
- # "Akaleth": ["Akaleth|Class"],
- # "ArcticSphinx": [],
- # "Fangy": [],
- # "BeruBeruFunBot": [],
- # "ChrisKnepper": [],
- # "Consuuume": [],
- # "Destroyer675000": [],
- # "dudeman514": ["Dudeman514"],
- # "ExplosiveHippo": [],
- # "Grub0": [],
- # "LinkSlayer64": ["XLS64|Lappy", "LS64"],
- # "Nolski": [],
- # "Obliv": ["Obliv|class"],
- # "Spectralshadow": ["Spectralshadow5"],
- # "TheOnlyTaters": [],
- # "Waterseas": [],
- # "Xethik": ["XethikClass"],
- # "edwfoss": [],
- # "emmix": [],
- # "gecko_": [],
- # "h2g2guy": [],
- # "valeatory": [],
- # "zanarama": ["zanarama1"]
- # }
-
- # List of students in the class
- classDict = {
- "milistisia2": [],
- "NumbuhFour": [],
- "direkitteh": [],
- "jeid64": [],
- "Fortnight": [],
- "Federcheese": [],
- "IAmRasputin": [],
- "holtr94": [],
- "mellolikejello": [],
- "JoLaks": [],
- "amm4108": [],
- "RedTwo": [],
- "Kaffys": [],
- }
-
- date = link.getText().split('.')[1]
- year = date.split('-')[0]
- month = date.split('-')[1]
- day = date.split('-')[2]
-
- # Display the date
- print("\n###### Attendance for {0}-{1}-{2} ######".format(
- year, month, day))
-
- # Print out each student's status that day
- for student in classDict.keys():
- if student.lower() in present:
- print("%s was present!" % student)
- else:
- has_alias = False
- for alias in classDict[student]:
- if alias.lower() in present:
- has_alias = True
- break
-
- if has_alias:
- print ("%s was present!" % student)
- else:
- print("%s was not in class." % student)
diff --git a/docs/._config.yml b/docs/._config.yml
new file mode 100644
index 00000000..b5e4ac93
--- /dev/null
+++ b/docs/._config.yml
@@ -0,0 +1,2 @@
+name: HFOSS
+markdown: kramdown
\ No newline at end of file
diff --git a/docs/.gitignore b/docs/.gitignore
new file mode 100644
index 00000000..57510a2b
--- /dev/null
+++ b/docs/.gitignore
@@ -0,0 +1 @@
+_site/
diff --git a/docs/_config.yml b/docs/_config.yml
new file mode 100644
index 00000000..2f7efbea
--- /dev/null
+++ b/docs/_config.yml
@@ -0,0 +1 @@
+theme: jekyll-theme-minimal
\ No newline at end of file
diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html
new file mode 100644
index 00000000..6637fc87
--- /dev/null
+++ b/docs/_layouts/default.html
@@ -0,0 +1,17 @@
+
+
+
diff --git a/hfoss-attends-spring2015-final.txt b/hfoss-attends-spring2015-final.txt
deleted file mode 100644
index defa9261..00000000
--- a/hfoss-attends-spring2015-final.txt
+++ /dev/null
@@ -1,334 +0,0 @@
-
-###### Attendance for 2015-02-09 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was not in class.
-IAmRasputin was present!
-RedTwo was not in class.
-holtr94 was present!
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-Kaffys was present!
-direkitteh was present!
-
-
-###### Attendance for 2015-02-11 ######
-jeid64 was present!
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-holtr94 was present!
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-Kaffys was not in class.
-direkitteh was not in class.
-
-
-###### Attendance for 2015-02-16 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-holtr94 was present!
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-Kaffys was not in class.
-direkitteh was not in class.
-
-###### Attendance for 2015-02-18 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was not in class.
-IAmRasputin was present!
-RedTwo was not in class.
-holtr94 was present!
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-Kaffys was not in class.
-direkitteh was present!
-
-
-###### Attendance for 2015-02-23 ######
-jeid64 was present!
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-holtr94 was present!
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-Kaffys was not in class.
-direkitteh was present!
-
-
-###### Attendance for 2015-02-25 ######
-jeid64 was present!
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-holtr94 was present!
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-Kaffys was not in class.
-direkitteh was present!
-
-###### Attendance for 2015-03-18 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-holtr94 was not in class.
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was not in class.
-Kaffys was not in class.
-direkitteh was present!
-
-###### Attendance for 2015-03-30 ######
-jeid64 was present!
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-holtr94 was not in class.
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-Kaffys was not in class.
-direkitteh was present!
-
-###### Attendance for 2015-04-01 ######
-jeid64 was present!
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was not in class.
-holtr94 was not in class.
-milistisia2 was not in class.
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-Kaffys was not in class.
-direkitteh was not in class.
-
-###### Attendance for 2015-04-01 ######
-jeid64 was present!
-NumbuhFour was present!
-mellolikejello was not in class.
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was not in class.
-holtr94 was not in class.
-milistisia2 was not in class.
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-Kaffys was not in class.
-direkitteh was not in class.
-
-###### Attendance for 2015-04-08 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-holtr94 was present!
-milistisia2 was present!
-JoLaks was present!
-amm4108 was not in class.
-Fortnight was present!
-Kaffys was present!
-direkitteh was present!
-
-###### Attendance for 2015-04-13 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was not in class.
-Federcheese was not in class.
-IAmRasputin was not in class.
-RedTwo was not in class.
-holtr94 was not in class.
-milistisia2 was present!
-JoLaks was not in class.
-amm4108 was present!
-Fortnight was not in class.
-Kaffys was not in class.
-direkitteh was present!
-
-###### Attendance for 2015-04-15 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was not in class.
-RedTwo was not in class.
-holtr94 was not in class.
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-Kaffys was present!
-direkitteh was present!
-
-###### Attendance for 2015-04-20 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was not in class.
-IAmRasputin was present!
-RedTwo was not in class.
-holtr94 was not in class.
-milistisia2 was not in class.
-JoLaks was present!
-amm4108 was present!
-Fortnight was not in class.
-Kaffys was not in class.
-direkitteh was not in class.
-
-###### Attendance for 2015-04-22 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-holtr94 was not in class.
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-Kaffys was not in class.
-direkitteh was not in class.
-
-###### Attendance for 2015-04-27 ######
-jeid64 was present!
-NumbuhFour was not in class.
-mellolikejello was not in class.
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-holtr94 was present!
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-Kaffys was not in class.
-direkitteh was not in class.
-
-###### Attendance for 2015-04-29 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was not in class.
-IAmRasputin was present!
-RedTwo was present!
-holtr94 was not in class.
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-Kaffys was present!
-direkitteh was not in class.
-
-###### Attendance for 2015-05-04 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-holtr94 was not in class.
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was not in class.
-Kaffys was not in class.
-direkitteh was not in class.
-
-###### Attendance for 2015-05-06 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was not in class.
-IAmRasputin was present!
-RedTwo was present!
-holtr94 was not in class.
-milistisia2 was not in class.
-JoLaks was present!
-amm4108 was present!
-Fortnight was not in class.
-Kaffys was not in class.
-direkitteh was not in class.
-
-###### Attendance for 2015-05-06 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was not in class.
-IAmRasputin was present!
-RedTwo was present!
-holtr94 was not in class.
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-Kaffys was not in class.
-direkitteh was not in class.
-
-###### Attendance for 2015-05-13 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was not in class.
-IAmRasputin was present!
-RedTwo was present!
-holtr94 was not in class.
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-Kaffys was not in class.
-direkitteh was not in class.
-
-###### Attendance for 2015-05-20 ######
-jeid64 was present!
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was not in class.
-IAmRasputin was present!
-RedTwo was not in class.
-holtr94 was present!
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-Kaffys was not in class.
-direkitteh was not in class.
diff --git a/hfoss-attends-spring2015.txt b/hfoss-attends-spring2015.txt
deleted file mode 100644
index 0dcb3226..00000000
--- a/hfoss-attends-spring2015.txt
+++ /dev/null
@@ -1,286 +0,0 @@
-
-###### Attendance for 2015-02-09 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was not in class.
-IAmRasputin was present!
-RedTwo was not in class.
-Kaffys was not in class.
-holtr94 was present!
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-direkitteh was present!
-
-###### Attendance for 2015-02-11 ######
-jeid64 was present!
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-Kaffys was not in class.
-holtr94 was present!
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-direkitteh was not in class.
-
-
-###### Attendance for 2015-02-16 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-Kaffys was not in class.
-holtr94 was present!
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-direkitteh was not in class.
-
-###### Attendance for 2015-02-18 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was not in class.
-IAmRasputin was present!
-RedTwo was not in class.
-Kaffys was not in class.
-holtr94 was present!
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-direkitteh was present!
-
-###### Attendance for 2015-02-23 ######
-jeid64 was present!
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-Kaffys was not in class.
-holtr94 was present!
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-direkitteh was present!
-
-###### Attendance for 2015-02-25 ######
-jeid64 was present!
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-Kaffys was not in class.
-holtr94 was present!
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-direkitteh was present!
-
-###### Attendance for 2015-03-18 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-Kaffys was not in class.
-holtr94 was not in class.
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was not in class.
-direkitteh was present!
-
-###### Attendance for 2015-03-30 ######
-jeid64 was present!
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-Kaffys was not in class.
-holtr94 was not in class.
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-direkitteh was present!
-
-###### Attendance for 2015-04-01 ######
-jeid64 was present!
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was not in class.
-Kaffys was not in class.
-holtr94 was not in class.
-milistisia2 was not in class.
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-direkitteh was not in class.
-
-###### Attendance for 2015-04-01 ######
-jeid64 was present!
-NumbuhFour was present!
-mellolikejello was not in class.
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was not in class.
-Kaffys was not in class.
-holtr94 was not in class.
-milistisia2 was not in class.
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-direkitteh was not in class.
-
-###### Attendance for 2015-04-08 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-Kaffys was not in class.
-holtr94 was present!
-milistisia2 was present!
-JoLaks was present!
-amm4108 was not in class.
-Fortnight was present!
-direkitteh was present!
-
-###### Attendance for 2015-04-15 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was not in class.
-RedTwo was not in class.
-Kaffys was not in class.
-holtr94 was not in class.
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-direkitteh was present!
-
-###### Attendance for 2015-04-20 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was not in class.
-IAmRasputin was present!
-RedTwo was not in class.
-Kaffys was not in class.
-holtr94 was not in class.
-milistisia2 was not in class.
-JoLaks was present!
-amm4108 was present!
-Fortnight was not in class.
-direkitteh was not in class.
-
-###### Attendance for 2015-04-22 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-Kaffys was not in class.
-holtr94 was not in class.
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-direkitteh was not in class.
-
-###### Attendance for 2015-04-27 ######
-jeid64 was present!
-NumbuhFour was not in class.
-mellolikejello was not in class.
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-Kaffys was not in class.
-holtr94 was present!
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-direkitteh was not in class.
-
-###### Attendance for 2015-04-29 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was not in class.
-IAmRasputin was present!
-RedTwo was present!
-Kaffys was not in class.
-holtr94 was not in class.
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-direkitteh was not in class.
-
-###### Attendance for 2015-05-04 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was present!
-IAmRasputin was present!
-RedTwo was present!
-Kaffys was not in class.
-holtr94 was not in class.
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was not in class.
-direkitteh was not in class.
-
-###### Attendance for 2015-05-06 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was not in class.
-IAmRasputin was present!
-RedTwo was present!
-Kaffys was not in class.
-holtr94 was not in class.
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-direkitteh was not in class.
-
-###### Attendance for 2015-05-13 ######
-jeid64 was not in class.
-NumbuhFour was present!
-mellolikejello was present!
-Federcheese was not in class.
-IAmRasputin was present!
-RedTwo was present!
-Kaffys was not in class.
-holtr94 was not in class.
-milistisia2 was present!
-JoLaks was present!
-amm4108 was present!
-Fortnight was present!
-direkitteh was not in class.
diff --git a/hfossfeedpull.py b/hfossfeedpull.py
deleted file mode 100644
index 17ea1b9b..00000000
--- a/hfossfeedpull.py
+++ /dev/null
@@ -1,31 +0,0 @@
-import feedparser
-from bs4 import BeautifulSoup
-from pprint import pprint
-
-feeds = [
- "http://blog-decause.rhcloud.com/rss.xml",
- "https://rasputinfoss.wordpress.com/feed/",
- #"http://amm4108.github.io/feeds/hfoss.atom.xml",
- "http://direkitteh.tumblr.com/rss/",
- "https://fad4470.github.io/feed/",
- "http://sarahbethfederman.com/blog/feed/",
- "http://redtwo-foss.blogspot.com/feeds/posts/default?alt=rss",
- "https://milistisia2.wordpress.com/feed/",
- "https://mellolikejello.wordpress.com/feed/",
- #"https://kaffys.github.io/feed",
- "http://fossclassjeid64.blogspot.com/feeds/posts/default?alt=rss",
- "https://jalfoss.wordpress.com/feed/",
- "http://robertholt.net/all_feed",
- #"https://fortnightblog.wordpress.com/feed/",
-]
-
-with open('{}'.format('hfossallposts.txt'), "w") as g:
- for feed in feeds:
- d = feedparser.parse(feed)
- with open('{}'.format(d.feed.title.encode('utf8')), "w") as f:
- for item in d.entries:
- pprint(item)
- soup = BeautifulSoup(item.summary)
- contents = "\n".join(soup.stripped_strings)
- f.write(contents.encode('utf8'))
- g.write(contents.encode('utf8'))
diff --git a/oer.yaml b/oer.yaml
deleted file mode 100644
index dcf62af9..00000000
--- a/oer.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-# Resource Links:
-# Underscores will be replaced with spaces
-
-videos:
- Linus_Torvalds_Git_Talk: "http://www.youtube.com/watch?v=4XpnKHJAok8"
-#challenges:
-# How_To_Use_Bash: "http://lmgtfy.com/?q=how+to+use+bash"
-decks:
- Ryan_Scott_Brown_Git_Talk: "http://rsb.io/talks/git/"
- SFLC_VMware_Lawsuit_FAQ: "https://sfconservancy.org/linux-compliance/vmware-lawsuit-faq.html"
- Python_Learner's_Glossary: "https://github.com/catherinedevlin/python_learners_glossary"
-
-
diff --git a/ofcourse-content/assignments.yaml b/ofcourse-content/assignments.yaml
new file mode 100644
index 00000000..ed370b1f
--- /dev/null
+++ b/ofcourse-content/assignments.yaml
@@ -0,0 +1,5 @@
+# Example ofCourse assignments.yaml
+# Homework keys should be added as YAML
+# list elements.
+hw:
+ - firstflight
diff --git a/ofcourse-content/course.ics b/ofcourse-content/course.ics
new file mode 100644
index 00000000..5576a169
--- /dev/null
+++ b/ofcourse-content/course.ics
@@ -0,0 +1,386 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+X-WR-CALNAME:HFOSS-Spring-2020-IGME-582-2195
+PRODID:-////Emacs with Org mode//EN
+X-WR-TIMEZONE:EST
+X-WR-CALDESC:
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-dca8bf44-7193-417b-9480-cfce5b6baff0
+DTSTART:20200113T090000
+DTEND:20200113T100000
+SUMMARY:HFOSS w01d01
+DESCRIPTION:<2020-01-13 Mon 09:00>–<2020-01-13 Mon 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-44c2e685-ceb9-42ac-99c0-0e5559a562a5
+DTSTART:20200115T090000
+DTEND:20200115T100000
+SUMMARY:HFOSS w01d02
+DESCRIPTION:<2020-01-15 Wed 09:00>–<2020-01-15 Wed 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-5ddc6f3c-b440-49a7-a440-4c155437fd94
+DTSTART:20200117T090000
+DTEND:20200117T100000
+SUMMARY:HFOSS w01d03
+DESCRIPTION:<2020-01-17 Fri 09:00>–<2020-01-17 Fri 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-6199c56d-d83c-45ff-97f7-ed77e5bf045b
+DTSTART:20200122T090000
+DTEND:20200122T100000
+SUMMARY:HFOSS w02d02
+DESCRIPTION:<2020-01-22 Wed 09:00>–<2020-01-22 Wed 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-502dd538-4504-4919-99d6-ee1112029dee
+DTSTART:20200124T090000
+DTEND:20200124T100000
+SUMMARY:HFOSS w02d03
+DESCRIPTION:<2020-01-24 Fri 09:00>–<2020-01-24 Fri 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-2eeed279-96f6-47a3-b8a0-1a151f556062
+DTSTART:20200127T090000
+DTEND:20200127T100000
+SUMMARY:HFOSS w03d01
+DESCRIPTION:<2020-01-27 Mon 09:00>–<2020-01-27 Mon 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-eb5dd00c-6242-4aa8-92df-e913d2e115b4
+DTSTART:20200129T090000
+DTEND:20200129T100000
+SUMMARY:HFOSS w03d02
+DESCRIPTION:<2020-01-29 Wed 09:00>–<2020-01-29 Wed 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-c3c3fba9-2947-45ec-9a38-9531a7ebc616
+DTSTART:20200131T090000
+DTEND:20200131T100000
+SUMMARY:HFOSS w03d03
+DESCRIPTION:<2020-01-31 Fri 09:00>–<2020-01-31 Fri 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-147eb5e8-f6dd-4911-97ed-c0448149e749
+DTSTART:20200203T090000
+DTEND:20200203T100000
+SUMMARY:HFOSS w04d01
+DESCRIPTION:<2020-02-03 Mon 09:00>–<2020-02-03 Mon 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-866629ef-9a6d-4a55-8307-983017d21365
+DTSTART:20200205T090000
+DTEND:20200205T100000
+SUMMARY:HFOSS w04d02
+DESCRIPTION:<2020-02-05 Wed 09:00>–<2020-02-05 Wed 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-37ad6cae-1157-4d8b-b77b-59af5e848500
+DTSTART:20200207T090000
+DTEND:20200207T100000
+SUMMARY:HFOSS w04d03
+DESCRIPTION:<2020-02-07 Fri 09:00>–<2020-02-07 Fri 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-41299431-fd96-41ee-89a7-de80adacb97e
+DTSTART:20200210T090000
+DTEND:20200210T100000
+SUMMARY:HFOSS w05d01
+DESCRIPTION:<2020-02-10 Mon 09:00>–<2020-02-10 Mon 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-639b7b46-041c-4660-83e5-1973a6d0ad85
+DTSTART:20200212T090000
+DTEND:20200212T100000
+SUMMARY:HFOSS w05d02
+DESCRIPTION:<2020-02-12 Wed 09:00>–<2020-02-12 Wed 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-a3163011-0d98-4da1-bd7e-228278791ecd
+DTSTART:20200214T090000
+DTEND:20200214T100000
+SUMMARY:HFOSS w05d03
+DESCRIPTION:<2020-02-14 Fri 09:00>–<2020-02-14 Fri 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-0db942dc-3061-4d6b-9c89-464c568057a9
+DTSTART:20200217T090000
+DTEND:20200217T100000
+SUMMARY:HFOSS w06d01
+DESCRIPTION:<2020-02-17 Mon 09:00>–<2020-02-17 Mon 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-9ab5528d-50e7-479b-8fc5-45a967778009
+DTSTART:20200219T090000
+DTEND:20200219T100000
+SUMMARY:HFOSS w06d02
+DESCRIPTION:<2020-02-19 Wed 09:00>–<2020-02-19 Wed 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-1dd3efcd-baac-4dc4-9f08-fad2ee2b7360
+DTSTART:20200221T090000
+DTEND:20200221T100000
+SUMMARY:HFOSS w06d03
+DESCRIPTION:<2020-02-21 Fri 09:00>–<2020-02-21 Fri 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-45d8e546-7cd2-4f0d-9dc9-146710017d11
+DTSTART:20200224T090000
+DTEND:20200224T100000
+SUMMARY:HFOSS w07d01
+DESCRIPTION:<2020-02-24 Mon 09:00>–<2020-02-24 Mon 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-c14f36c1-79cd-437c-b8cc-3bfa699c18ca
+DTSTART:20200226T090000
+DTEND:20200226T100000
+SUMMARY:HFOSS w07d02
+DESCRIPTION:<2020-02-26 Wed 09:00>–<2020-02-26 Wed 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-e00a8441-677a-403b-83ca-42a2c147909b
+DTSTART:20200228T090000
+DTEND:20200228T100000
+SUMMARY:HFOSS w07d03
+DESCRIPTION:<2020-02-28 Fri 09:00>–<2020-02-28 Fri 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-27d0ce74-94be-4034-a5bf-1ab873e19645
+DTSTART:20200302T090000
+DTEND:20200302T100000
+SUMMARY:HFOSS w08d01
+DESCRIPTION:<2020-03-02 Mon 09:00>–<2020-03-02 Mon 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-eb6e62be-5b6a-4f65-be48-87d332335593
+DTSTART:20200304T090000
+DTEND:20200304T100000
+SUMMARY:HFOSS w08d02
+DESCRIPTION:<2020-03-04 Wed 09:00>–<2020-03-04 Wed 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-9261978a-d945-42e0-8467-57897873e931
+DTSTART:20200306T090000
+DTEND:20200306T100000
+SUMMARY:HFOSS w08d03
+DESCRIPTION:<2020-03-06 Fri 09:00>–<2020-03-06 Fri 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-8c5b8c8b-983b-40a4-aa92-16bb0ccc8883
+DTSTART:20200316T090000
+DTEND:20200316T100000
+SUMMARY:HFOSS w09d01
+DESCRIPTION:<2020-03-16 Mon 09:00>–<2020-03-16 Mon 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-e81cfc0a-9c75-46b3-8042-23ff8b78d990
+DTSTART:20200318T090000
+DTEND:20200318T100000
+SUMMARY:HFOSS w09d02
+DESCRIPTION:<2020-03-18 Wed 09:00>–<2020-03-18 Wed 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-877b11fe-a352-4689-80f7-eb84a8374e9e
+DTSTART:20200320T090000
+DTEND:20200320T100000
+SUMMARY:HFOSS w09d03
+DESCRIPTION:<2020-03-20 Fri 09:00>–<2020-03-20 Fri 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-fd07fffd-1f8b-4c46-bb03-6fd0776af6ae
+DTSTART:20200323T090000
+DTEND:20200323T100000
+SUMMARY:HFOSS w10d01
+DESCRIPTION:<2020-03-23 Mon 09:00>–<2020-03-23 Mon 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-bdbd3405-117a-47a4-9e79-2790571c89c8
+DTSTART:20200325T090000
+DTEND:20200325T100000
+SUMMARY:HFOSS w10d02
+DESCRIPTION:<2020-03-25 Wed 09:00>–<2020-03-25 Wed 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-6c48bfe8-854f-4f9b-b824-d3217c1500bb
+DTSTART:20200327T090000
+DTEND:20200327T100000
+SUMMARY:HFOSS w10d03
+DESCRIPTION:<2020-03-27 Fri 09:00>–<2020-03-27 Fri 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-f894f246-4adf-4cc3-b474-4bb09e57b1b1
+DTSTART:20200330T090000
+DTEND:20200330T100000
+SUMMARY:HFOSS w11d01
+DESCRIPTION:<2020-03-30 Mon 09:00>–<2020-03-30 Mon 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-de5319a6-ee49-46b4-9dd7-ce5ed15d126c
+DTSTART:20200401T090000
+DTEND:20200401T100000
+SUMMARY:HFOSS w11d02
+DESCRIPTION:<2020-04-01 Wed 09:00>–<2020-04-01 Wed 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-7d7b151f-d979-4108-9d49-186d4d4b5b58
+DTSTART:20200403T090000
+DTEND:20200403T100000
+SUMMARY:HFOSS w11d03
+DESCRIPTION:<2020-04-03 Fri 09:00>–<2020-04-03 Fri 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-0dcd25f2-0b6f-4c9f-a0a8-af4c390ad945
+DTSTART:20200406T090000
+DTEND:20200406T100000
+SUMMARY:HFOSS w12d01
+DESCRIPTION:<2020-04-06 Mon 09:00>–<2020-04-06 Mon 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-15ac4fef-443f-4fe1-a4df-6e4b95d00a88
+DTSTART:20200408T090000
+DTEND:20200408T100000
+SUMMARY:HFOSS w12d02
+DESCRIPTION:<2020-04-08 Wed 09:00>–<2020-04-08 Wed 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-d4ba33e5-fad7-47c5-843c-d5e3a0b60bfe
+DTSTART:20200410T090000
+DTEND:20200410T100000
+SUMMARY:HFOSS w12d03
+DESCRIPTION:<2020-04-10 Fri 09:00>–<2020-04-10 Fri 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-b329e8ea-05ce-4abe-a009-aa8b5d35f0e2
+DTSTART:20200413T090000
+DTEND:20200413T100000
+SUMMARY:HFOSS w13d01
+DESCRIPTION:<2020-04-13 Mon 09:00>–<2020-04-13 Mon 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-b5fb5f1d-d340-4cf1-8803-0ad52b8e73e7
+DTSTART:20200415T090000
+DTEND:20200415T100000
+SUMMARY:HFOSS w13d02
+DESCRIPTION:<2020-04-15 Wed 09:00>–<2020-04-15 Wed 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-83d18feb-a291-4f1e-a18a-a585780b96d2
+DTSTART:20200417T090000
+DTEND:20200417T100000
+SUMMARY:HFOSS w13d03
+DESCRIPTION:<2020-04-17 Fri 09:00>–<2020-04-17 Fri 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-941690ec-5e6b-47d6-a5e8-6edf2935101b
+DTSTART:20200420T090000
+DTEND:20200420T100000
+SUMMARY:HFOSS w14d01
+DESCRIPTION:<2020-04-20 Mon 09:00>–<2020-04-20 Mon 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-21ee0cca-f00a-4d9c-b7c9-f6cc59c6d1ed
+DTSTART:20200422T090000
+DTEND:20200422T100000
+SUMMARY:HFOSS w14d02
+DESCRIPTION:<2020-04-22 Wed 09:00>–<2020-04-22 Wed 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-94330127-a5f7-4503-9ad7-ade768e7fdbb
+DTSTART:20200424T090000
+DTEND:20200424T100000
+SUMMARY:HFOSS w14d03
+DESCRIPTION:<2020-04-24 Fri 09:00>–<2020-04-24 Fri 10:00>
+CATEGORIES:class
+END:VEVENT
+BEGIN:VEVENT
+DTSTAMP:20200112T020818Z
+UID:TS1-eb343d4e-9cbe-4784-b2f6-129d6c17885c
+DTSTART:20200427T090000
+DTEND:20200427T100000
+SUMMARY:HFOSS w15d01
+DESCRIPTION:<2020-04-27 Mon 09:00>–<2020-04-27 Mon 10:00>
+CATEGORIES:class
+END:VEVENT
+END:VCALENDAR
diff --git a/ofcourse-content/oer.yaml b/ofcourse-content/oer.yaml
new file mode 100644
index 00000000..e972efb1
--- /dev/null
+++ b/ofcourse-content/oer.yaml
@@ -0,0 +1,9 @@
+# Resource Links:
+# Underscores will be replaced with spaces
+
+videos:
+ Linus_Torvalds_Git_Talk: "http://www.youtube.com/watch?v=4XpnKHJAok8"
+#challenges:
+# How_To_Use_Bash: "http://lmgtfy.com/?q=how+to+use+bash"
+#decks:
+# Ryan_Scott_Brown_Git_Talk: "http://rsb.io/talks/git/"
diff --git a/ofcourse-content/old.travis.yml b/ofcourse-content/old.travis.yml
new file mode 100644
index 00000000..dafc1aa5
--- /dev/null
+++ b/ofcourse-content/old.travis.yml
@@ -0,0 +1,3 @@
+language: python
+install: pip install ofcourse
+script: ofcourse validate
diff --git a/ofcourse-content/people/2020/spring/BlueJay89.yaml b/ofcourse-content/people/2020/spring/BlueJay89.yaml
new file mode 100644
index 00000000..7485e93e
--- /dev/null
+++ b/ofcourse-content/people/2020/spring/BlueJay89.yaml
@@ -0,0 +1,21 @@
+# The name does *not* need to be your full legal name, but will be used as your
+# display name throughout the class web site. It can be a nickname or just your
+# first name if you like.
+name: James Lewis
+blog: http://www.jamesfossinfo.data.blog
+feed: https://jamesfossinfo.data.blog/?blogsub=confirmed#538
+forges:
+ - http://github.com/BlueJay89/hfoss
+irc: BlueJay89
+rit_dce: jll9160
+hw:
+ firstflight: https://wordpress.com/block-editor/post/jamesfossinfo.data.blog/6
+ blog02: https://jamesfossinfo.data.blog/2020/02/05/blog-post-2/
+ blog03: https://jamesfossinfo.data.blog/2020/02/05/blog-post-3/
+ litreview1: https://jamesfossinfo.data.blog/2020/02/05/blog-post-3/
+ blog04: https://jamesfossinfo.data.blog/2020/02/19/bug-fixes/
+ litreview2: late, working on it
+ blog05: late, working on it
+ bugfix: upcoming
+ blog06: upcoming
+ finalpresso: upcoming
diff --git a/ofcourse-content/people/2020/spring/fake_student.yaml b/ofcourse-content/people/2020/spring/fake_student.yaml
new file mode 100644
index 00000000..2af2f69f
--- /dev/null
+++ b/ofcourse-content/people/2020/spring/fake_student.yaml
@@ -0,0 +1,12 @@
+# The name does *not* need to be your full legal name, but will be used as your
+# display name throughout the class web site. It can be a nickname or just your
+# first name if you like.
+name: Thunder Dome
+blog: http://wordpress.com
+feed: http://en.blog.wordpress.com/feed/
+forges:
+ - http://fsf.org
+irc: Thunderdome
+rit_dce: abc123
+hw:
+ firstflight: http://exampleblog.post
diff --git a/ofcourse-content/site.yaml b/ofcourse-content/site.yaml
new file mode 100644
index 00000000..bdf293de
--- /dev/null
+++ b/ofcourse-content/site.yaml
@@ -0,0 +1,32 @@
+course:
+ name: HFOSS
+ desc: The RIT Humanitarian Free/Open Source Software Development Course
+ place: RIT
+ start: 2020-01-13
+ end: 2020-04-27
+ times: MWF 9:00AM - 9:50AM
+ course: 2195.582.01
+ location: Magic Spell Studios (MSS)-2175
+ repo: https://github.com/ritjoe/hfoss
+# Optional if using OpenShift public_url: http://hfoss-ritigm.rhcloud.com
+
+instructor:
+ name: D. Joe Anderson
+ email: deejoe@mail.rit.edu
+ irc: dzho
+ avatar: None
+ openhub: None
+ coderwall: None
+ twitter: None
+ office:
+ location: Magic Spell Studios (MSS)-3190
+ hours: Thursdays 5:00-7:00pm
+ links:
+ blog: http://deejoe.etrumeus.com/update
+ linkedin: http://linkedin.com/in/decause
+ github: http://github.com/ritjoe
+
+assistant:
+ name: None
+ email: None
+ irc: None
diff --git a/static/css/bootstrap.min.css b/ofcourse-content/static/css/bootstrap.min.css
similarity index 100%
rename from static/css/bootstrap.min.css
rename to ofcourse-content/static/css/bootstrap.min.css
diff --git a/static/css/material-wfont.min.css b/ofcourse-content/static/css/material-wfont.min.css
similarity index 100%
rename from static/css/material-wfont.min.css
rename to ofcourse-content/static/css/material-wfont.min.css
diff --git a/static/css/material.min.css b/ofcourse-content/static/css/material.min.css
similarity index 100%
rename from static/css/material.min.css
rename to ofcourse-content/static/css/material.min.css
diff --git a/static/css/pace.css b/ofcourse-content/static/css/pace.css
similarity index 100%
rename from static/css/pace.css
rename to ofcourse-content/static/css/pace.css
diff --git a/static/css/ripples.min.css b/ofcourse-content/static/css/ripples.min.css
similarity index 100%
rename from static/css/ripples.min.css
rename to ofcourse-content/static/css/ripples.min.css
diff --git a/static/css/site.css b/ofcourse-content/static/css/site.css
similarity index 94%
rename from static/css/site.css
rename to ofcourse-content/static/css/site.css
index 5dc20610..b51501d3 100644
--- a/static/css/site.css
+++ b/ofcourse-content/static/css/site.css
@@ -12,7 +12,15 @@ body {
padding-bottom: 40px;
}
-a {
+.alert {
+ color: #333;
+}
+
+div.alert.alert-info, div.alert.alert-success, div.alert.alert-warning, div.alert.alert-failure {
+ color: #FFF;
+}
+
+a, .alert code>a, .alert a {
color: #303f9f;
}
diff --git a/static/fonts/LiberationSans-Regular-webfont.svg b/ofcourse-content/static/fonts/LiberationSans-Regular-webfont.svg
similarity index 100%
rename from static/fonts/LiberationSans-Regular-webfont.svg
rename to ofcourse-content/static/fonts/LiberationSans-Regular-webfont.svg
diff --git a/static/fonts/LiberationSans-Regular-webfont.woff b/ofcourse-content/static/fonts/LiberationSans-Regular-webfont.woff
similarity index 100%
rename from static/fonts/LiberationSans-Regular-webfont.woff
rename to ofcourse-content/static/fonts/LiberationSans-Regular-webfont.woff
diff --git a/static/fonts/Red Hat Liberation License.txt b/ofcourse-content/static/fonts/Red Hat Liberation License.txt
similarity index 100%
rename from static/fonts/Red Hat Liberation License.txt
rename to ofcourse-content/static/fonts/Red Hat Liberation License.txt
diff --git a/static/fonts/glyphicons-halflings-regular.eot b/ofcourse-content/static/fonts/glyphicons-halflings-regular.eot
similarity index 100%
rename from static/fonts/glyphicons-halflings-regular.eot
rename to ofcourse-content/static/fonts/glyphicons-halflings-regular.eot
diff --git a/static/fonts/glyphicons-halflings-regular.svg b/ofcourse-content/static/fonts/glyphicons-halflings-regular.svg
similarity index 100%
rename from static/fonts/glyphicons-halflings-regular.svg
rename to ofcourse-content/static/fonts/glyphicons-halflings-regular.svg
diff --git a/static/fonts/glyphicons-halflings-regular.ttf b/ofcourse-content/static/fonts/glyphicons-halflings-regular.ttf
similarity index 100%
rename from static/fonts/glyphicons-halflings-regular.ttf
rename to ofcourse-content/static/fonts/glyphicons-halflings-regular.ttf
diff --git a/static/fonts/glyphicons-halflings-regular.woff b/ofcourse-content/static/fonts/glyphicons-halflings-regular.woff
similarity index 100%
rename from static/fonts/glyphicons-halflings-regular.woff
rename to ofcourse-content/static/fonts/glyphicons-halflings-regular.woff
diff --git a/ofcourse-content/static/hw/how-constructivism-changed-education.html b/ofcourse-content/static/hw/how-constructivism-changed-education.html
new file mode 100644
index 00000000..761102a6
--- /dev/null
+++ b/ofcourse-content/static/hw/how-constructivism-changed-education.html
@@ -0,0 +1,174 @@
+
Knowledge is a process of discovery: how constructivism changed education
+
+
+
+
+ According to constructivists, we truly understand something when we filter it through our senses and interactions.
+ from shutterstock.com
+
+
+
+Luke Zaphir, The University of Queensland
+
+
This is the second of two essays exploring key theories – cognitive load theory and constructivism – underlying teaching methods used today.
+
+
+
+
Constructivism is an educational philosophy that deems experience as the best way to acquire knowledge.
+
+
We truly understand something – according to a constructivist – when we filter it through our senses and interactions. We can only understand the idea of “blue” if we have vision (and if we aren’t colour blind).
+
+
Constructivism is an education philosophy, not a learning method. So while it encourages students to take more ownership of their own learning, it doesn’t specify how that should be done. It is still being adapted to teaching practice.
+
+
The philosophy underpins the inquiry-based method of teaching where the teacher facilitates a learning environment in which students discover answers for themselves.
One of the earliest proponents of constructivism was Swiss psychologist Jean Piaget, whose work centred around children’s cognitive development.
+
+
Piaget’s theories (popularised in the 1960s) on the developmental stages of childhood are still used in contemporary psychology. He observed that children’s interactions with the world and their sense of self corresponded to certain ages.
+
+
For instance, through sensations from birth, a child has basic interactions with the world; from two years old, they use language and play; they use logical reasoning from age seven, and abstract reasoning from age eleven.
+
+
+
+
+ Jean Piaget observed children discover the world in stages that correspond with their age.
+ from shutterstock.com
+
+
+
+
Before Piaget, there had been little specific analyses on the developmental psychology of humans. We understood that humans became more cognitively sophisticated as they aged, but not exactly how this occurred.
+
+
Piaget’s theory was further developed by his contemporary, Lev Vygotsky (1925-1934), who saw all tasks as fitting into:
+
+
+
tasks we can do on our own
+
tasks we can do with guidance
+
tasks we can’t do at all.
+
+
+
There’s not a lot of meaningful learning to be made in the first category. If we know how to do something, we don’t gain too much from doing it again.
+
+
Similarly, there’s not much to be gained from the third category. You could throw a five year old into a calculus class run by the most brilliant teacher in the world but there just isn’t enough prior understanding and cognitive development for the child to learn anything.
+
+
Most of our learning occurs in category two. We’ve got enough prior knowledge to make sense of the topic or task, but not quite enough to fully comprehend it. In developmental psychology, this idea is known as the zone of proximal development – the place between our understanding and our ignorance.
+
+
Using the zone for learning
+
+
Imagine asking ten-year-old students to go about adding every number from 1 to 100 (1 + 2 + 3 + 4 + 5 and onwards). They could theoretically do this by brute force addition which will likely bore and frustrate them.
+
+
A constructivist inspired teacher might instead ask: “is there a faster way of doing it?” and “is there a pattern of numbers?”
+
+
With a bit of help, some students might see that every number pairs with a corresponding number to add to 101 (1 + 100, 2 + 99, 3 + 98). They end up with 50 pairs of 101, for a much easier, faster sum of 50 x 101.
+
+
The pattern and easy multiplication might not have come intuitively (or even at all) to most students. But facilitation by the teacher pushes their existing knowledge into a meaningful learning experience – using a completely mundane problem. It then becomes a process of discovery rather than monotonous addition.
+
+
+
+
+ In a group, each student contributes their individual capabilities to solve a given problem.
+ from shutterstock.com
+
+
+
+
Medical students began using constructivist pedagogies in US and Australian universities in the 1960s. Instead of teachers showing students exactly how to do something and having them copy it (known as explicit instruction), tutors prompted students to form hypotheses and directed them to critique one another.
Learning methods based on constructivism primarily use group work. The emphasis is on students building their understanding of a topic or issue collaboratively.
+
+
Imagine a science class exploring gravity. The question of the day is: do objects drop at different speeds? The teacher could facilitate this activity by asking:
+
+
+
“what could we drop?”
+
“what do you think will happen if we drop these two objects at the same time?”
+
“how could we measure this?”
+
+
+
Then, the teacher would give students the chance to conduct this experiment themselves. By doing this, teachers allow students to build on their individual strengths as they discover a concept and work at their own pace.
+
+
+
+
+ Do objects drop at different speeds?
+ from shutterstock.com
+
+
+
+
Experiments in science class, excursions to cultural landmarks in history class, acting out Shakespeare in English – these are all examples of constructivist learning activities.
+
+
What’s the evidence?
+
+
Constructivist principles naturally align with what we expect of teachers. For instance, teacher professional standards require them to build rapport with students to manage behaviour, and expert teachers tailor lessons to students’ specific cultural, social and even individual needs.
+
+
Explicit instruction is still appropriate in many instances – but the basic teaching standard includes a recognition of students’ unique circumstances and capabilities.
Constructivism can be seen as merely a descriptive theory, providing no directly useful teaching strategies. There are simply too many learning contexts (cultures, ages, subjects, technologies) for constructivism to be directly applicable, some might say.
+
+
And it’s true constructivism is a challenge. It requires creative educational design and lesson planning. The teacher needs to have an exceptional knowledge of the subject area, making constructivist approaches much harder for primary school teachers who have broader general knowledge.
A major challenge for constructivism is the current outcomes-focused approach to learning. Adhering to a curricular requirement for assessment at certain times (such as end-of-term tests) takes the focus away from student-centred learning and towards test preparation.
+
+
Explicit instruction is more directly useful for teaching to the test, which can be an unfortunate reality in many educational contexts.
+
+
An an education philosophy, constructivism has a lot of potential. But getting teachers to contextualise and personalise lessons when there are standardised tests, playground duty, health and safety drills, and their personal lives, is a big ask.
Luke Zaphir, Researcher for the University of Queensland Critical Thinking Project; and Online Teacher at Education Queensland's IMPACT Centre, The University of Queensland
"Jinja2 is a modern and designer-friendly templating language for
+ Python, modelled after Django’s templates. It is fast, widely used
+ and secure with the optional sandboxed template execution
+ environment."
"Mako is used by the python.org website, as well as reddit.com where it
- delivers over one billion page views per month. It is the default template
- language included with the Pylons and Pyramid web frameworks."
"Jinja2 is a modern and designer-friendly templating language for
+ Python, modelled after Django’s templates. It is fast, widely used
+ and secure with the optional sandboxed template execution
+ environment."