This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
haas:fall2017:data:projects [2017/09/17 17:33] – [Projects] wedge | haas:fall2017:data:projects [2017/11/27 18:23] (current) – [Projects] wedge | ||
---|---|---|---|
Line 6: | Line 6: | ||
======Projects====== | ======Projects====== | ||
- | * [[/ | + | |
- | | + | | |
- | | + | | |
- | | + | | |
- | | + | | |
- | | + | | |
- | | + | | |
- | | + | | |
- | | + | | |
- | | + | | |
- | | + | | |
- | | + | | |
+ | | [[/ | ||
+ | | | ||
+ | | [[/ | ||
+ | | [[/ | ||
+ | | [[/ | ||
+ | | [[/ | ||
+ | | [[/ | ||
+ | | [[/ | ||
+ | | [[/ | ||
+ | | [[/ | ||
+ | | [[/ | ||
+ | | [[/ | ||
+ | | [[/ | ||
+ | | [[/ | ||
+ | | [[/ | ||
+ | | [[/ | ||
+ | | @lightgreen: | ||
======Class Stats====== | ======Class Stats====== | ||
* [[/ | * [[/ | ||
+ | |||
+ | ======Week 12====== | ||
+ | * We cap off our data structures explorations this semester with trees, and the dlt0 project. | ||
+ | * We'll also be unveiling the EoCE. All celebrate and cheer! | ||
+ | |||
+ | ======Week 11====== | ||
+ | * Now we're onto queues, another important data structure | ||
+ | |||
+ | ======Week 10====== | ||
+ | * And now we start to pick up the pace a bit, with dll2 and dls0, our first foray into additional data structures | ||
+ | |||
+ | ======Week 9====== | ||
+ | * We continue our list implementation with dll1. | ||
+ | |||
+ | ======Week 8====== | ||
+ | * We are now halfway through the semester. Look at how far we've come! | ||
+ | * We will now embark on our first great re-implementation of our nodes and lists, with the addition of another pointer in our node: **fro** | ||
+ | * this means each node points to TWO other nodes, the familiar one that comes after (our " | ||
+ | * there are some additional features and functionality introduced as well, in the **dln0** and **dll0** projects, kicking our great re-implementation. | ||
+ | |||
+ | ======Break 1====== | ||
+ | * The week 7 journal entry will be your bonus break week entry. You'll have until Thursday of break week to modify it, at which point I'll roll it to week 8 (which will be a normal weekly entry- our journal entries will now sync up with the week!). If you don't touch week 7 it won't harm you, it will only help you if you contribute any content. | ||
+ | * With 7 data points now available, I have populated the class stats page. | ||
+ | ======Week 7====== | ||
+ | * We're nearing the completion of our singly-linked list endeavors. A lot of details to track and ideas to encapsulate into working code. | ||
+ | * I've had some good questions, and discussion in the class chat and e-mail. Still perhaps not as much as I'd prefer. Remember: this won't become any easier unless you immerse yourself in it. | ||
+ | * Knowledge assessment in class on Thursday. | ||
+ | |||
+ | ======Week 6====== | ||
+ | * I'd like to have a knowledge assessment next week, ideally on Thursday. A chance for you to demonstrate your understanding of important Data Structures concepts (nodes, lists) | ||
+ | * sll2 is our next project, completing our basic list implementation. | ||
+ | * Important things about the linked list implementation: | ||
+ | * running mknode() or malloc() and then immediately re-assigning the pointer is **bad**; we call that an intentional memory leak. Don't do it. | ||
+ | * error checking is important. Just because malloc() always tends to work, doesn' | ||
+ | * don't rely on fixed counts or positions. Just because we have getpos()/ | ||
+ | * did you know, that checking for equality with < | ||
+ | * Commenting with why/how comments is central and critical! Just because the person you copied from feels above commenting doesn' | ||
+ | * This is also a general plea to understand what you are doing. I see far too much " | ||
+ | * **insert()** was probably THE MOST IMPORTANT function from sll0. For those who "just didn't get to it" or "ran out of time", congratulations you avoided the conceptual centrepiece of the whole project. Again, it is a "win the battle but lose the war" type of thing. You NEED to understand things like **insert()**, | ||
+ | * avoid using < | ||
+ | * As is increasingly becoming the case, the true abstract nature of data structures is starting to throw some people for a loop. That is the hidden edge that data possesses, unlike discrete, where we generally focus more on exploring new methods of thinking- in data our playground is conceptual and abstract thought. Just getting compilable syntax will not really do you any favors in the long run. | ||
+ | * With all this said, there are those who are grokking or doing quite well. Mistakes may be made, but realizations being had, and actual learning taking place. | ||
======Week 5====== | ======Week 5====== | ||
* The abstract nature of the class is starting to ramp up, I've already noticed far too many people who are still trying to brute force things. Just like trying to write a program avoiding loops because you never learned them: you're going to run into scalability issues before too long. | * The abstract nature of the class is starting to ramp up, I've already noticed far too many people who are still trying to brute force things. Just like trying to write a program avoiding loops because you never learned them: you're going to run into scalability issues before too long. | ||
* The focus needs to be on the concept. The code should then fall in line rather easily. What is it that you are focusing on? A node? A list? Be sure not to be unclear on such intentions. | * The focus needs to be on the concept. The code should then fall in line rather easily. What is it that you are focusing on? A node? A list? Be sure not to be unclear on such intentions. | ||
- | * We continue our singly linked list implementation. | + | * We continue our singly linked list implementation, with the next round of functions to implement in **sll1** |
+ | * Some observations from evaluating sln1: | ||
+ | * be mindful of the perspective; | ||
+ | * same with lists: we may eventually built on top of lists, and lists are made of nodes, but lists themselves need to only care about doing list-y things. Call the node functions to handle specific node operations, call list functions to handle list operations. Don't worry about if we're just a list, or a stack, or any other arrangement of linked nodes. | ||
+ | * error checking! So many of you need to become more cognizant of verifying that your allocation of resources was successful. Don't just malloc() and go. CHECK to see if the result is NULL and proceed appropriately. I've been cutting some slack (depending on other demonstrations of awareness) since we're just starting, but soon that too will become a vicious detractor of points. Just like consistent indentation and good how/why comments, do proper error checking! | ||
+ | * Unless the function is specifically meant to do I/O (ie the **displayf()/ | ||
+ | * These are good foundational habits I'm trying to instill should you find yourself working on or with libraries, more complex code-bases, standards/ | ||
======Week 4====== | ======Week 4====== |