uva-cs / pdr Goto Github PK
View Code? Open in Web Editor NEWThis project forked from aaronbloomfield/pdr
A repo for a Program and Data Representation university-level course
License: Other
This project forked from aaronbloomfield/pdr
A repo for a Program and Data Representation university-level course
License: Other
Because implementing your hash table using a...hash table...might not be the best idea.
More info coming later
I am dumbfounded. This basically means, short of installing Clang as through https://gist.github.com/datlife/c754535f18b422f6b8d59028c7f31bac, there is no way to easily get memory leak detection on macOS.
We need to fix this before Lab 2 is released.
link directs students to https://uva-cs.github.io/pdr/labs/slides/08-assembly-64bit.html#/3/8
but should direct them to https://uva-cs.github.io/pdr/slides/08-assembly-64bit.html#/3/8
Lab 5:
Lab 6:
Lab 8:
Lab 9:
Lab 11:
Right now we syntax highlight all source files using source-highlight
.
It would be nice to also syntax highlight all the code in the slides and labs. Would reduce eyestrain, especially for the labs.
The good news is that this can be done already:
cpp
to all our code blocks.Line 22 in 2dcae87
reveal.js/
in front.Ideally, the highlighting would be consistent across all sources. The labs will most likely stay in light mode, and probably the source files as well, but the slides are dark mode. That doesn't mean we can't have consistent highlighting, though, as many themes have both light and dark variants.
So all we need to do is find a theme! I personally have a soft spot for One Dark and One Light, having worked on Atom as they were being developed (they also have corresponding Emacs variants), but I understand that this really isn't a decision for me to make ๐.
Notes:
--style-css-file
argument.I think that the links to the 32-bit assembly files on the labs/index.html page should be removed, as 32-bit assembly is no longer being taught in the course.
The crossed-out links aren't really necessary because students won't be accessing them anyway. Obviously the 32-bit materials can still remain in the repo for students' reference.
People got very confused.
https://piazza.com/class/k5bqcfbzltk49c?cid=936
Or some type of tutorial for how students can check for memory leaks. Because right now we expect submissions to be leak-free when we never explain to them how to check for leaks...
I'm going over lab 4 right now (probably the last one for a while) and have a few suggestions to restructure it.
inlab4.cpp
requirement. There's nothing we can really grade for that part other than "did they write it?". The real benefit is from using the debugger on that file. If removing it as a submittable requirement makes people skip over it, well then shucks, that's on them and they still need to complete the doc somehow.I don't know...overall, Lab 4 feels like one of the labs with the least amount of cohesion, even after these proposed changes. It's just a bunch of functions and worksheets all over the place with minimal or no relation to each other. It would be nice to come up with a reworked lab that ties everything together.
Other than the benefit of using a more recent HTML specification, the pandoc HTML5 template also allows for better rendering on mobile (it's not bad as-is, but the code blocks are currently very tiny).
If this is given the go-ahead, I can create a PR.
A hard-coded test harness may make it simpler for students to run the main method without having to pipe in input each time (e.g. ./a.out < testfile1.txt). A hard-coded test harness could show actual (what the student's code is returning) vs. expected (the output that the graders are looking for) values, making it easier for students to quickly see if their code is running properly.
For post-lab 5, instead of having students do this execution:
./a.out < testfile1.txt
AVL path: can't created
AVL numNodes: 17
head testfile1.out.txt
AVL path: problems can't kind created
AVL numNodes: 18
They can do this execution:
./a.out
AVL path (actual): can't created
AVL path (expected): problems can't kind created
AVL numNodes (actual): 17
AVL numNodes (expected): 18
AVLTree t1;
t1.insert("We");
t1.insert("can't");
t1.insert("solve");
t1.insert("problems");
t1.insert("by");
t1.insert("using");
t1.insert("the");
t1.insert("same");
t1.insert("kind");
t1.insert("of");
t1.insert("thinking");
t1.insert("we");
t1.insert("used");
t1.insert("when");
t1.insert("we");
t1.insert("created");
t1.insert("them");
t1.insert("-Albert");
t1.insert("Einstein");
cout << "Actual : " << t1.pathTo("created") << endl;
cout << "Expected: problems can't kind created" << endl;
cout << "Actual : " << t1.numNodes() << endl;
cout << "Expected: 18" << endl;
server doesn't seem to be piping in the correct input for this lab at the moment.
They are conflating the 5 required iterations with the number of iterations for counter.cpp.
https://piazza.com/class/k5bqcfbzltk49c?cid=639
https://piazza.com/class/k5bqcfbzltk49c?cid=634
https://piazza.com/class/k5bqcfbzltk49c?cid=618
Some also need extra guidance to realize that this script is completely separate from lab 6's.
https://piazza.com/class/k5bqcfbzltk49c?cid=639
https://piazza.com/class/k5bqcfbzltk49c?cid=627
Others also are confused about how to call a.out.
https://piazza.com/class/k5bqcfbzltk49c?cid=629
I feel that it would be beneficial to teach Makefiles earlier in the course, because it is much easier for students to run make
rather than clang++ file1.cpp file2.cpp file3.cpp ...
.
The in-lab component of lab 1 would especially be suitable for a makefile tutorial, as this lab component requires students to split a C++ program into multiple .h and .cpp files. This fits in well with the concept of dependencies (e.g. LifeCycle.cpp
depends on LifeCycle.h
).
Additionally, the various stages of compiling a C++ program were taught at the beginning of the semester (preprocessor, linker, assembler, etc.), which would fit in well with the concept of compiling .cpp files into .o files (with the -c
flag), linking these .o files, etc.
Just an idea; I feel like introducing students to smart pointers is a much better use of time than introducing them to Objective-C.
Smart pointers are key to avoiding memory leaks, and are highly recommended for "modern" C++ development.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.