Corning Community College
CSCS2320 Data Structures
Assignments, Documents, Information, and Projects
======Projects======
* [[/haas/spring2014/data/projects/intro|intro]] (due 20140124)
* [[/haas/spring2014/data/projects/datatypes|data types]] (due 20140131)
* [[/haas/spring2014/data/projects/nodes|nodes]] (due 20140207)
* [[/haas/spring2014/data/projects/sll#looking_ahead|moar_sll]] (due 20140221)
* [[/haas/spring2014/data/projects/sll_rewrite|sll1]] (due 20140314)
* [[/haas/spring2014/data/projects/sll2|sll2]] (due 20140321)
* [[/haas/spring2014/data/projects/dll1|dll1]] (due 20140412)
======Week 10======
* Updates to sll2 project:
* fixes to testing/stacktest.c to hopefully make its usage more clear
* updates to base-level Makefile to enable upgrading to the next project
* renaming src/stack/stackops.c to src/stack/mk.c (to align with existing naming conventions)
* dll1 project has been released
* implement "prev" pointers into all your logic, reworking algorithms to be more efficient where possible (in particular, you no longer need to rely as heavily on setpos()/getpos(). displayb() can be more cleanly rewritten, along with several other list functions).
* implement the Queue data structure using doubly linked lists
* note the addition of a new "data" element to the node- this is designed to be used for general purpose implementations (nodes of nodes, or a "parent" pointer if need be)... nothing you should need for this project, but the upcoming binary trees will see some potential use for this.
* you have until the Saturday **following** break week to complete this.
======Week 9======
* last week seemed to offer some a much needed chance to make further enhancements and fixes to things, hopefully it was just as useful for everyone (I'll be going through your code to make sure). Note that you won't be able to complete sll2 unless your sll1 code is functional.
* update to sll1 project: Makefile enhancements allowing seamless upgrade to sll2 project; **make update** today and read the sll2 project document for further instructions.
* Singly-Linked Stacks! sll2 project now available for your implementation. If you "get it", this should be short work. If not, it will be continued good learning and practice.
* You are hopefully noticing a code modularity relationship taking place (lists use nodes, stacks use lists which use nodes). Maintain that hierarchy, and use role-specific actions (i.e. when using the stack in testing (note testing, not stack function implementation), ONLY use the stack operations, do not use the list operations)
======Week 8======
* SLL1 project: nobody appeared to have gotten it working. A couple of you had been communicating with me, so I knew where you stood; others, not so much. However, despite all this, it does present us with an excellent learning opportunity. I have extended the due date for the SLL1 project by another week, so we can sort out our code issues. Please be sure to do the following:
* Make sure you keep your list **end** pointers up-to-date with any changes (start should always point to the start of the list; end should always be pointing to the last node in the list)
* Inside your **sll1/** directory, run: **make update** (I have made some fixes)
* I've added a new **testing/palindrome.c** program (it should work, but I haven't tested it). Also use this to test your list functionality (both list test.c and palindrome.c should not segfault, and produce correct output).
* **Compile with debugging and make use of the debugger!** This will help route out improperly assigned pointers (pointers being NULL when you aren't expecting them to be) and also let you view what your program is actually doing (vs. what you think it should be doing).
* Please note, this isn't an unexpected nor unwelcome thing. It might get frustrating, but that's the nature of this particular beast. Stick with it and endure, and it will only strengthen your abilities.
* With that said, please e-mail/see me sooner rather than later- less banging of head against the wall (limit yourselves to 30 minutes, not 8 hours), more asking of questions.
* I would be happy to review/go over how to use the debugger (Shawn, the tutor, and actually anyone who took Data Structures last semester can help with this).
======Week 6 and 7======
* Working on SLL1 project; I've heard from some of you, and those I have heard from have generally been getting it. I hope those I have not heard from are not silently banging their head against a wall.
* This is important stuff... you need to keep playing with it.
======Week 5======
* taking another week to complete the current singly-linked list project before unveiling its next iteration.
======Week 4======
* a [[/haas/spring2014/data/common/appendwalkthrough|reply to an email]] that might help some
* To continue with our linked list, I'd like for you to extend last week's project by implementing the other functions as mentioned in the [[/haas/spring2014/data/projects/sll#looking_ahead|singly linked list project]].
* There are 12 in total listed.. try to have at least 6 of them done by 20140221.
* Implement these as standalone functions (which can call each other if need be-- including insert(), append(), and getNode()).
* Note: unless intentionally designed to do I/O (display() being the only one so far), none of these functions should do any I/O. Just processing.
* Incorporate some test into your code to verify the proper operation of these new list functions.
* Testing your linked list in general. Try some of the typical first-time implementation gotchas:
* Inserting before the start of the list (first node, which is node 0)
* Inserting before the second node
* Appending after the start of the list (first node, which is node 0)
* Appending after the second node
* getNode() on first and second nodes of the list
A suggested style for your **display()** functions could be as follows:
start: [0] 23 -> [1] 47 -> [2] 59 -> [3] 16 -> [4] 7 -> [5] 11 -> NULL
Note the node position prefixing each node's contents, for easier addressing when allowing the user to interactively perform insert/append/getNode on specific nodes.
======Week 3======
* nodes project is due this week... so far I haven't really heard a peep out of anyone... does that mean everyone understands it?
* the next project (And the one after that..) will be based on concepts in the node project, so it is essential you get a handle on these concepts.
* the next project, sll, will be based on the work you undertook in the nodes project, completing additional functionality so that we can start manipulating nodes for the purposes of effectively storing our data. The resulting structure/algorithms is known as a linked list, and more specifically- a singly linked list (each node has ONE pointer, that "next" pointer).
* insert: the ability to place a new node into a list BEFORE any given node
* append: the ability to place a new node into a list AFTER any given node
* getNode: remove a node from a list, reconnecting remaining nodes to maintain the list
======Week 2======
* You should be well on your way to completing the data types project, and seeking any clarification on any questions you have.
* The next project (And the first one really dealing with core course concepts) has been released. Please give that a read through and start to work on it.
======Week 1======
* Welcome! Be sure to:
* Read over the syllabus
* Subscribe a preferred and frequently checked e-mail address to the class mailing list
* the intention is that the list will be central to class communications
* please do this before 01/24/2014 so we can really start making use of it
* Using the [[/haas/spring2014/common/class_chat|tutorial]], set up a screen session and get on #csci on irc
* Familiarize yourself with your Opus, and once there:
* customize it (title/subtitle)
* add an introduction
* create your first week content
* The first order of business is to review. You'll need everything we learned from C and C++, with a focus on:
* functions (prototypes, definitions, calling, parameters, return types)
* structs
* pointers