Table of Contents

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

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 <stdio.h>
 
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 <stdio.h>
 
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 <stdio.h>
 
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 <stdio.h>
 
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 <stdio.h>
 
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 <stdio.h>
 
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 <stdio.h>
 
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 <stdio.h>
 
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 <stdio.h>
 
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 <stdio.h>
 
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 <stdio.h>
 
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 <stdio.h>
 
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.

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.

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.

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:

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:

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:

Hypothesis

State their experiment's hypothesis. Answer the following questions:

Experiment

Follow the steps given to recreate the original experiment. Answer the following questions:

Data

Publish the data you have gained from your performing of the experiment here.

Analysis

Answer the following:

Conclusions

Answer the following: