Giter Site home page Giter Site logo

aaronbloomfield / pdr Goto Github PK

View Code? Open in Web Editor NEW
112.0 112.0 485.0 64.68 MB

A repo for a Program and Data Representation university-level course

License: Other

Makefile 0.24% TeX 2.60% C++ 3.33% HTML 85.35% Assembly 1.31% Java 0.18% CSS 0.39% JavaScript 5.08% PHP 0.11% C 0.12% Shell 0.05% Objective-C 0.01% SCSS 1.20% Dockerfile 0.03%

pdr's People

Contributors

50wliu avatar aaronbloomfield avatar acs3ss avatar acuddeback avatar adeet1 avatar agente382 avatar alecgrieser avatar apnorton avatar bartleby2718 avatar bhainesva avatar cceckman avatar charlesreiss avatar disha-jain avatar ebetica avatar hank-weber avatar jlacomis avatar jonahweissman avatar jxmorris12 avatar kartikchugh avatar markfloryan avatar mgsanusi avatar neilmenon avatar nocholasrift avatar rachelsfba avatar rmccampbell avatar sebastianjay avatar smasher164 avatar theberuriahincident avatar wbthomason avatar xz7uy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pdr's Issues

Update the almost-complete binary tree lecture slides

This is in 11-heaps-huffman. The two diagrams (on slide 4-4) should be swapped (this makes it easier to explain, as tree that is filling in on the left sub-tree of the root would then be on the left side of the slide), and the next slide should indicate which of the previous two slides cases is which. This can't be done now because it would then conflict with the lecture recording.

provide more "bootstrapping" guidance

to start on lab 1, they need to clone the git repo. but to see how to clone the git repo, they need to read the lab. so it's a bit of a cycle

this immediate problem can be solved by providing a link to lab 1 or tutorial 1 on github

but an overall introduction to git, and the git clone and git pull commands would help

lab 2: main() function modification

From an anonymous feedback:

the test client doesn't support testing the last() method in List (to get a ListItr); that could be useful to have. A way of directly calling makeEmpty() from the test client would be nice as well.

handle the nasm tutorial

The original link died (although the links to the tutorial are not consistent, and at least one of them point sto a new 64-bit tutorial). Either find the old version (internet archive?), ask to incldue it in the repo, or create one.

Update links to optimizations in lab 9

The wikipedia link (either in the in-lab or post-lab) has 30 or so optimizations, but only a half dozen or so are relevant. Either point out the relevant ones when providing the link, or enter those directly into the lab document.

Fix optimizations in pre-lab 9

Many of the optimizations for pre-lab 9 (Collatz conjecture) are not really applicable (loop unrolling (they are doing recursion), dead code elimination (they should not have dead code)). Other, more applicable ones, should be inserted.

virtual box updates

Some updates to the virtual box image and the page in the repo (the tutorial 1 page that describes how it was set up)

  • The additional commands that were done for the SLP config
  • Increase the disk size to 16 Gb from 8 Gb
  • Get the Objective C stuff set up
  • Download updates
  • Update the latest version number of VirtualBox (there was an issue with a previous version not working well in the fall 2014 semester; remove any verbiage related to that)

Possible Error on Slides #4

~/04-arrays-bigoh.html#/4/9

For Big Oh notation (f(n) = O(g(n)) I believe that to check, use f(n) <= c *g(N). However on the final piece of the slide, when comparing n^2 = O(n), shouldn't the explanation say "No matter what values for c and n0 we pick, n^2 > c * n" (rather than c * n^2 > n) because n^2 is f(n) not g(n)?

Also there is a closing parenthesis missing for O(g(n).

Wikibook bash tutorial insufficient

The Wikibook on bash doesn't much discuss the read command or the expr command, both important to lab6.

Possible solutions: change Wikibook or write a new tutorial.

Discuss style guides

Style guides are important to good software engineering at scale. They help programmers to produce shareable and less-buggy code, and they encourage programmers to think about language design and capabilities.

As far as I recall, style guides aren't covered in the UVA curriculum. They are a more software-engineering-oriented topic than many things in this course; however, I think they would fit in well in explaining some of the patterns (INCLUDE guards, file breakup, references v. const references v. pointers). Also (in my limited experience) there's more variety in C/C++ style guides than in Java, so covering them in 2150 could help.

Some examples:
http://google-styleguide.googlecode.com/svn/trunk/cppguide.html
(I like the "don't use non-const references" rule.)
http://lars-lab.jpl.nasa.gov/JPL_Coding_Standard_C.pdf

Misspelling in Doxygen Tutorial

"RTF (rich text format) is a file type that can be loaded up into your favorite word processing program. One you have run doxygen, the comments are formatted into a file called doc/rtf/refman.rtf -- try loading up that file. Note that a number of the fields in the file (such as "Title" and "Author") are not yet filled in -- this is addressed below."

The second sentence I assume should say 'Once' rather than 'One'.

Reverse bit numbering in IBCM documentation

TL;DR IBCM bits are numbered 0 to 15 from left to right; should be 15 down to 0.

The IBCM documentation uses a bit numbering convention where bits are numbered left-to-right. In all of the embedded documentation I've seen, however, a right-to-left convention is used.

According to the IBCM doucmentation,
0x1080 = 0b 0001 0000 1000 0000
would have bits 3 and 8 set and all others clear; bit 0 is the most-significant bit, and bit 15 is the least-significant. In the convention that ARM and Intel use in their documentation, bit 0 is the least significant, and bit 15 the most significant; the same convention is used in our school's CpE sequence.

This choice is not simply arbitrary; it has implications for the numeric interpretation. In a right-to-left numbering, bit 0 represents 2^0, bit 1 represents 2^1, etc. There's no such correspondence with a left-to-right numbering.

Proposal: revise the IBCM slide set, chapter, etc. so that students are used to seeing bits run from (N-1) down to 0. This is in keeping with conventions of professional documentation and the numeric meaning.

Misspelling in traveling-skeleton.cpp

"// This method will compute the full distance of the cycle that starts
// at the 'start' parmater, goes to each of the cities in the dests
// vector IN ORDER, and ends back at the 'start' parameter."

The first use 'parmater' should be 'parameter'.

Lab 6 in-lab -O2 tutorial

Sample commands include nonexistent --Wall flag; should be -Wall:
clang++ -O2 --Wall wordPuzzle.cpp timer.cpp hashTable.cpp

updates to ibcm lab

mention that they have to do an instruction creation; they can't have 10 successive load commands that were pre-computed. or perhaps have them accept the array base and size as input

Lab 11 update

The post-lab asks for big-Oh and big-Omega (and big-Theta), but should just ask for big-Theta

Tutorial 1: VirtualBox usage: Update the shared folders description

The shared folders description in "Tutorial 1: Introduction to UNIX: VirtualBox use" need updating. From a student (submitted via a support request ticket #1391 on Jan 22, 2014):

Submitted by ...
Course: CS 2150
Assignment:
Date submitted: 2014-01-22 08:45:26
Status: resolved
Date resolved: 2014-01-22 23:58:34
Owner: none

Original comments:

Professor Bloomfield,

As you said, there are 3 options to shuffle files between the host and the guest. Instead of trying to use an email client or Dropbox, I decided to go the shared folders route.

This was a bad idea. I first attempted it through the terminal commands, like you had provided. Unfortunately, this just didn't work out for me, so I decided to use the AutoMounter in Virtualbox.

Initially, I tried changing the default mounting location, but then I decided that didn't matter. If I was using the Automounter to avoid the terminal, why would I want to use more terminal to modify the Automounter? Also, it ended up being difficult and tedious.

So now we've decided to use the Automounter generically. This mounts the files into /media/ and appends a suffix of ''sf_'' to your folder name. Unfortunately, I was not able to access the shared folder due to permissions.

To get the permissions, I needed to run

sudo adduser student vboxsf
password

Then logout, login.

I only mention this so that future students can use it, if you place it into the Tutorial 1: Introduction to UNIX: VirtualBox Use file.

Thanks,
....

fix the lab 1 / tutorial 1 intro to unix section

it's a bit out of date, and some are finding it confusing; from an anonymous feedback send on 1-16-15:

The introduction to UNIX tutorial seems to feel a bit out of date and seems to have some confusingly written parts (i.e. when explaining how to launch Emacs, "...the easy way is to load up a command shell (which you will need anyway), and enter 'emacs &' (note the 'x' at the beginning, and the ampersand ('&') at the end)." I was confused about the statement about the 'x' that wasn't there (simply 'emacs &', with no 'x' ended up being the correct command statement). Also, my Emacs already had colored font and line-number-mode enabled and didn't require M-x prompts. Also, at the end of the tutorial the link to the Emacs reference sheet doesn't load, and the file is not under the misc folder in Resources as described. These are just a few that stood out to me when I was going through the tutorial. Though in spite of this, I was still able to get through the tutorial without much trouble so I suppose it's somewhat trivial. Thanks in advance.

update readings

some of them (such as on graphs) need more online sources

Little-Endian updates

Include a slide or two in the x86 set showing how little-Endian is useful (i.e., that the address for a 1, 2, or 4 byte value can be the same)

Move debugger content over to LLDB

LLDB is better designed to work with the LLVM-based clang/clang++, and is (arguably) a more modern and complete debugger. Given that we've moved from gcc to clang, it seems sensible to also move from gdb to lldb. We can use this: http://lldb.llvm.org/lldb-gdb.html to help translate the tutorials. This move will also help students using OSX, as lldb (rather than gdb) is now the Apple standard.

add a queue UML diagram

in 02-lists.html, there are linked list diagrams for a stack, and there should be one for a queue; note that there is also a doubly linked list diagram in 01-cpp.html

include a calling convention animation

an animation of how memory (registers and the stack) changes as the cpu progresses through a calling convention example would help them understand it better

Fix the brl instruction

The brl instruction should put PC+1 into the accumulator, but that is not consistent. This needs to be checked in the slides, the book, the online emulator, the C++ emulator, and the multiply.ibcm file.

Update IBCM pages

  • all "CS 216" should be replaced with "CS 2150"
  • verify the links work
  • the directions point to the old ibcm files (ibcm-examples.pdf, etc.), and should point to the book chapter (a copy of which should be in that directory)
  • that IBCM directory should be re-uploaded to the various sites listed in the slides and the main IBCM page
  • links to the old binaries (mac, linux, cygwin, windows) still exist there somewhere

Use the W3C link checker: http://validator.w3.org/checklink

Fix Objective C

The old tutorial (and solution) no longer compiles, and the Wikibooks tutorial also no longer works (it will not compile the Point.m class).

The problem seems to be that Objective C is so intertwined with the framework that the non-framework version is so old (mid 90's) that it just doesn't want to compile any more. So the solution is to install the framework and convert everything over to that.

In order to make it compile:

  • the gnustep-devel (and possibly gobjc) package(s) need to be installed
  • Object changes to NSObject in the source file
  • #import <Foundation/Foundation.h> changes to #import <objc/Object.h>
  • change free to dealloc
  • the compilation line is clang -I /usr/include/GNUstep linkedlist.m -lobjc -lgnustep-base, which can be made easier if a Makefile is provided with the tutorial.

However, this means that the wikibooks tutorial doesn't really apply, and a bunch of disclaimers will have to be included, as well as directions for how to properly format their code (the new #import, dealloc instead of free, etc.). The options are:

  • Use that tutorial, but provide lots of disclaimers
  • Find a new tutorial
  • Write a new tutorial (least desirable)

Targeting this for spring 2015. Note that the submission system will have to have the compilation command re-enabled. And the lab10.md and labs/index.md page will need to be modified to re-enable that part of the tutorial.

Fix how we list nasm as declaring arrays

From ticket # 1572:

I'm working on finishing up the prelab for lab8 right now and I was stuck for a while with an error ''Comma expected after operand 1'' when I was attempting to declare my array in the section .data fragment. I couldn't figure out why it wanted a comma when the slides syntax did not have it. Turns out nasm doesn't use DUP() for creating arrays. So a line of code like ''arr dd 2 dup(0)'' should use the ''times'' command ''arr times 2 dd 0.'' It didn't take that long to find the answer online but if other students are using the slides for help on the lab they may find this confusing as well.

Update dynamic dispatch content in lab 9

See Everett's comments from #30. Requiring them to do a part on dynamic dispatch (it's currently in a list of 4, and they have to do 2) might be a good idea to help drive the point home. Targetting this for spring 2015.

Lab 3: update cin input explanation

There was much confusion (in the spring of 2014) about how cin handles input, and how it tokenizes input; this should be better explained. Either use the while (cin.good()) or breaking on Control-D, but not both. Likely, cin.good() is easier to explain and easier for them to use.

doxygen tutorial changes (lab 11)

  • have them generate a Doxyfile (doxygen -g)
  • have them enable call graph generation (this may require installing graphviz on the VirtualBox image)
  • ...

Misspelling the Dark Lord's name

"// The Mouth of Sauroun! (prints out info on the created 'world')"

Gorthaur the Cruel would most definitely be displeased with the misspelling of his title on Line 17 of the middleearth.cpp file.

expalin about lab 2's provided methods

they work fine, but only if certain other methods work (such as makeEmpty()) -- so explain how to solve issues when they don't work, and what methods are required to work perfectly for the provided methods to work

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.