======The Other Middle======
=====Entries=====
====November 14, 2011====
Even with the appreciated added time, the workload involved with the opus concept, and applied to 2+ classes, is kind of tough. Perhaps if the classes had a bit more indicated structure, if we were all only students, or even if the work could be recursively counted?
The server IP addresses keep messing with me, I'm going to have to get involved with the configuration scripts, or whatever files are involved, and see if I can integrate the needed settings into the boot activities of the OS.
====November 18, 2011====
I think I've come us with a way to use a binary tree to score the hands for the poker game we're working on in discrete.
The sorting we're working on in Data Struct looks as if it will come in handy too.
The Strand sort could be fun to implement. I think a lot of the base functions I would need are already in my library.
====November 22, 2011====
Turkey Genocide day is nearly here!
I hate the little breaks where you have so much to accomplish that there is going to be no chance to relax, celebrate the reason for the break, and still get anything caught up!
The strand sort is almost functional. It is sorting the way it should, but doesn't exit like I expected. The logic checks. Desk checking doesn't present the cause of the issue. Currently walking it through the debugger (after Matt recompiled my library for the debugger so it can be viewed even when in an internal function.)
====November 28, 2011====
I went over the strand sort a couple of times more and couldn't find anything wrong with it. Last night I ran it again, without changing anything or recompiling, and it is now working! I reran it today and it still seems to be functioning the way it should. Maybe it was a memory allocation issue related to the time I was running it or perhaps it was debugger related once I got all the major kinks out of it?
I'm not so sure about forking, but pipes could definitely be used if I ever ger the friend's list up and running.
=====Data Topics=====
====Binary Tree Search====
Searching a binary tree is simple given an understanding of how the tree was constructed. Knowing the significance of each branch from a node will allow redirection from that node after comparison against the value searched for. This will guide you, like GoogleMaps Directions to the Node you are looking for.
====Binary Tree Removal====
Removing a node from a binary search tree requires some reordering of the tree. The two possible processes are centered around the rightmost-left and leftmost-right branches from the node to be deleted. Either can be used, however the chosen path must be used consistently within the tree. By moving the member which conforms to your convention and is furthest from the tree's root to the location of the node to delete, and reattaching the surrounding nodes to the existing tree, you can remove a member of the tree without breaking the data structure.
====Void Pointers====
Void Pointers allow you to create a pointer without designating what it will be pointing to. This allows pointer creation which can have the type designated at a later time or when another cell of a project is submitted.
void *name;
Creates the pointer, but designation later may require something as complex as type casting or forced allocation, or something simple as setting it equal to an already existing pointer.
====Sorting Algorithm====
A sorting algorithm is a process which orders data through formulaic manipulation of that data. There are many different types of sorting algorithms, each with it's own high and low points and of varying efficiency.
====Bubble Sort====
A bubble sort is a simple sorting algorithm which compares two items and, if they are out of order, switches them. After the consideration it then moves on to the next pair. When reaching the end of the list of data, if any changes were made, it returns to the beginning and starts again. While not a very efficient way to sort it is fairly easy to visualize.
====Insert sort====
The insertion sort is a comparison sort which builds the resultant list one element at a time, taking each piece of data and putting it in the correct place within the list, based on he current content of the list. It is a simple implementation, and considered very efficient for smaller sets of data. The insert sort is also memory efficient, needing only one node more than the finished list to run.
====Quick Sort====
Quick Sort divides a long list into two shorter lists and then recursively sorts those lists till they are in order. By choosing a value in the middle of the range of values, then arranging all the values greater than this 'pivot' value to one side and all values less that the 'pivot' too the other over and over again, eventually the list falls into order...
====Merge Sort====
The merge sort divides an unsorted list into the smallest possible divisions (1 element) then compares one with an adjacent one and sorts the two into a combined list. This is conducted recursively, creating larger and larger lists to merge, until a single sorted list is generated.
====Graphs====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you wish to aid your definition with a code sample, you can do so by using a wiki **code** block, an example follows:
/*
* Sample code block
*/
#include
int main()
{
return(0);
}
====Hash Tables-Key====
A hash table or hash map is a data structure that uses a hash function to map identifying values, known as keys (e.g., a person's name), to their associated values (e.g., their telephone number), much like a key value or index in a data base. Thus, a hash table implements an associative array. The hash function is used to transform the key into the index (the hash) of an array element (the slot or bucket) where the corresponding value is to be sought.
====Hash Table - Collisions====
Ideally, a hash table will only ever map one key to one corresponding record/data/doughnut. However, when different keys are mapped to the same hash value a Hash Collision occurs. Most hash tables are build to accomodate or deal with collisions to a predetermined extent.
====Binary Tree - insertion====
Within a binary search tree, no insertion should take place. Addition to the ends of the tree's branches can occur, but unless it is part of a reordering of the tree insertion is a No-No.
=====hpc1 Topics=====
====Keyword 1====
Identification and definition of the chosen keyword.
If you wish to aid your definition with a code sample, you can do so by using a wiki **code** block, an example follows:
/*
* Sample code block
*/
#include
int main()
{
return(0);
}
====Keyword 2====
Identification and definition of the chosen keyword.
If you want to demonstrate something on the command-line, you can do so as follows:
lab46:~$ cd src
lab46:~/src$ gcc -o hello hello.c
lab46:~/src$ ./hello
Hello, World!
lab46:~/src$
====Keyword 3====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you wish to aid your definition with a code sample, you can do so by using a wiki **code** block, an example follows:
/*
* Sample code block
*/
#include
int main()
{
return(0);
}
====Keyword 4====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you want to demonstrate something on the command-line, you can do so as follows:
lab46:~$ cd src
lab46:~/src$ gcc -o hello hello.c
lab46:~/src$ ./hello
Hello, World!
lab46:~/src$
====Keyword 5====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you wish to aid your definition with a code sample, you can do so by using a wiki **code** block, an example follows:
/*
* Sample code block
*/
#include
int main()
{
return(0);
}
====Keyword 6====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you want to demonstrate something on the command-line, you can do so as follows:
lab46:~$ cd src
lab46:~/src$ gcc -o hello hello.c
lab46:~/src$ ./hello
Hello, World!
lab46:~/src$
====Keyword 7====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you wish to aid your definition with a code sample, you can do so by using a wiki **code** block, an example follows:
/*
* Sample code block
*/
#include
int main()
{
return(0);
}
====Keyword 8====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you want to demonstrate something on the command-line, you can do so as follows:
lab46:~$ cd src
lab46:~/src$ gcc -o hello hello.c
lab46:~/src$ ./hello
Hello, World!
lab46:~/src$
====Keyword 9====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you wish to aid your definition with a code sample, you can do so by using a wiki **code** block, an example follows:
/*
* Sample code block
*/
#include
int main()
{
return(0);
}
====Keyword 10====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you want to demonstrate something on the command-line, you can do so as follows:
lab46:~$ cd src
lab46:~/src$ gcc -o hello hello.c
lab46:~/src$ ./hello
Hello, World!
lab46:~/src$
====Keyword 11====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you wish to aid your definition with a code sample, you can do so by using a wiki **code** block, an example follows:
/*
* Sample code block
*/
#include
int main()
{
return(0);
}
====Keyword 12====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you want to demonstrate something on the command-line, you can do so as follows:
lab46:~$ cd src
lab46:~/src$ gcc -o hello hello.c
lab46:~/src$ ./hello
Hello, World!
lab46:~/src$
=====sysprog Topics=====
UNIX Systems Programming
-
Users, Files, and the Manual
-
Directories and File Properties
File Types and File Properties
Bit Sets and Bit Masks
-
Focus on File Systems
Filesystem Structure; inodes and data blocks
-
Connection Control
-
Terminal Control and Signals
-
Event-Driven Programming
- Interval Timers
Reentrant code, critical sections
Asynchronous input
Processes and Programs
UNIX process model, processes
-
Shell Variables and the Environment
I/O Redirection and Pipes
-
Servers and Sockets
-
Coroutines
Connections and Protocols
-
Programming with Datagrams
-
Threads
-
Sharing data between threads
Synchronizing data
Inter Process Communication
Named pipes
Shared memory
File locks
Semaphores
====Pipes====
Direct output from a running process to the input of another running process. Used in multithreading and making toilets work.
====Client/Server Model====
Identification and definition of the chosen keyword.
If you want to demonstrate something on the command-line, you can do so as follows:
lab46:~$ cd src
lab46:~/src$ gcc -o hello hello.c
lab46:~/src$ ./hello
Hello, World!
lab46:~/src$
====Device Files====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you wish to aid your definition with a code sample, you can do so by using a wiki **code** block, an example follows:
/*
* Sample code block
*/
#include
int main()
{
return(0);
}
====Server Sockets====
What you plug the server into to get it electricity.
====Client Sockets====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you wish to aid your definition with a code sample, you can do so by using a wiki **code** block, an example follows:
/*
* Sample code block
*/
#include
int main()
{
return(0);
}
====Unix Domain Sockets====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you want to demonstrate something on the command-line, you can do so as follows:
lab46:~$ cd src
lab46:~/src$ gcc -o hello hello.c
lab46:~/src$ ./hello
Hello, World!
lab46:~/src$
====Multithreading====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you wish to aid your definition with a code sample, you can do so by using a wiki **code** block, an example follows:
/*
* Sample code block
*/
#include
int main()
{
return(0);
}
====Creating/Destroying Threads====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you want to demonstrate something on the command-line, you can do so as follows:
lab46:~$ cd src
lab46:~/src$ gcc -o hello hello.c
lab46:~/src$ ./hello
Hello, World!
lab46:~/src$
====Race Conditions====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you wish to aid your definition with a code sample, you can do so by using a wiki **code** block, an example follows:
/*
* Sample code block
*/
#include
int main()
{
return(0);
}
====Distributed Systems====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you want to demonstrate something on the command-line, you can do so as follows:
lab46:~$ cd src
lab46:~/src$ gcc -o hello hello.c
lab46:~/src$ ./hello
Hello, World!
lab46:~/src$
====TCP vs. UDP====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you wish to aid your definition with a code sample, you can do so by using a wiki **code** block, an example follows:
/*
* Sample code block
*/
#include
int main()
{
return(0);
}
====Terminal Control-Blocking vs. Non-Blocking====
Identification and definition of the chosen keyword. Substitute "keyword" with the actual keyword.
If you want to demonstrate something on the command-line, you can do so as follows:
lab46:~$ cd src
lab46:~/src$ gcc -o hello hello.c
lab46:~/src$ ./hello
Hello, World!
lab46:~/src$
=====data Objective=====
====Objective====
State the course objective; define what that objective entails.
===Method===
State the method you will use for measuring successful academic/intellectual achievement of this objective.
===Measurement===
Follow your method and obtain a measurement. Document the results here.
===Analysis===
Reflect upon your results of the measurement to ascertain your achievement of the particular course objective.
* How did you do?
* Room for improvement?
* Could the measurement process be enhanced to be more effective?
* Do you think this enhancement would be efficient to employ?
* Could the course objective be altered to be more applicable? How would you alter it?
=====hpc1 Objective=====
====Objective====
State the course objective; define what that objective entails.
===Method===
State the method you will use for measuring successful academic/intellectual achievement of this objective.
===Measurement===
Follow your method and obtain a measurement. Document the results here.
===Analysis===
Reflect upon your results of the measurement to ascertain your achievement of the particular course objective.
* How did you do?
* Room for improvement?
* Could the measurement process be enhanced to be more effective?
* Do you think this enhancement would be efficient to employ?
* Could the course objective be altered to be more applicable? How would you alter it?
=====sysprog Objective=====
====Objective====
State the course objective; define what that objective entails.
===Method===
State the method you will use for measuring successful academic/intellectual achievement of this objective.
===Measurement===
Follow your method and obtain a measurement. Document the results here.
===Analysis===
Reflect upon your results of the measurement to ascertain your achievement of the particular course objective.
* How did you do?
* Room for improvement?
* Could the measurement process be enhanced to be more effective?
* Do you think this enhancement would be efficient to employ?
* Could the course objective be altered to be more applicable? How would you alter it?
=====Experiments=====
====Experiment 1====
===Question===
What is the question you'd like to pose for experimentation? State it here.
===Resources===
Collect information and resources (such as URLs of web resources), and comment on knowledge obtained that you think will provide useful background information to aid in performing the experiment.
===Hypothesis===
Based on what you've read with respect to your original posed question, what do you think will be the result of your experiment (ie an educated guess based on the facts known). This is done before actually performing the experiment.
State your rationale.
===Experiment===
How are you going to test your hypothesis? What is the structure of your experiment?
===Data===
Perform your experiment, and collect/document the results here.
===Analysis===
Based on the data collected:
* was your hypothesis correct?
* was your hypothesis not applicable?
* is there more going on than you originally thought? (shortcomings in hypothesis)
* what shortcomings might there be in your experiment?
* what shortcomings might there be in your data?
===Conclusions===
What can you ascertain based on the experiment performed and data collected? Document your findings here; make a statement as to any discoveries you've made.
====Experiment 2====
===Question===
What is the question you'd like to pose for experimentation? State it here.
===Resources===
Collect information and resources (such as URLs of web resources), and comment on knowledge obtained that you think will provide useful background information to aid in performing the experiment.
===Hypothesis===
Based on what you've read with respect to your original posed question, what do you think will be the result of your experiment (ie an educated guess based on the facts known). This is done before actually performing the experiment.
State your rationale.
===Experiment===
How are you going to test your hypothesis? What is the structure of your experiment?
===Data===
Perform your experiment, and collect/document the results here.
===Analysis===
Based on the data collected:
* was your hypothesis correct?
* was your hypothesis not applicable?
* is there more going on than you originally thought? (shortcomings in hypothesis)
* what shortcomings might there be in your experiment?
* what shortcomings might there be in your data?
===Conclusions===
What can you ascertain based on the experiment performed and data collected? Document your findings here; make a statement as to any discoveries you've made.
====Retest====
If you're doing an experiment instead of a retest, delete this section.
If you've opted to test the experiment of someone else, delete the experiment section and steps above; perform the following steps:
===State Experiment===
Whose existing experiment are you going to retest? Prove the URL, note the author, and restate their question.
===Resources===
Evaluate their resources and commentary. Answer the following questions:
* Do you feel the given resources are adequate in providing sufficient background information?
* Are there additional resources you've found that you can add to the resources list?
* Does the original experimenter appear to have obtained a necessary fundamental understanding of the concepts leading up to their stated experiment?
* If you find a deviation in opinion, state why you think this might exist.
===Hypothesis===
State their experiment's hypothesis. Answer the following questions:
* Do you feel their hypothesis is adequate in capturing the essence of what they're trying to discover?
* What improvements could you make to their hypothesis, if any?
===Experiment===
Follow the steps given to recreate the original experiment. Answer the following questions:
* Are the instructions correct in successfully achieving the results?
* Is there room for improvement in the experiment instructions/description? What suggestions would you make?
* Would you make any alterations to the structure of the experiment to yield better results? What, and why?
===Data===
Publish the data you have gained from your performing of the experiment here.
===Analysis===
Answer the following:
* Does the data seem in-line with the published data from the original author?
* Can you explain any deviations?
* How about any sources of error?
* Is the stated hypothesis adequate?
===Conclusions===
Answer the following:
* What conclusions can you make based on performing the experiment?
* Do you feel the experiment was adequate in obtaining a further understanding of a concept?
* Does the original author appear to have gotten some value out of performing the experiment?
* Any suggestions or observations that could improve this particular process (in general, or specifically you, or specifically for the original author).