Computer Science Notes

From University
Jump to: navigation, search

Ideas

Internet that is content-centric, not host-centric. From Making the Internet Safe for Gadgets, Communications of the ACM, August 2014, page 18 the article discusses alternative protocols to TCP/IP. One based on content interests me because people use the Internet to find content, not network hosts.

Supporting Articles

ACM Taxonomy 2012

Measuring Computing Scalability

How is Computational Scalability measured?
Software Axis = work per minute
Hardware Axis = processors * throughput
Energy Axis = watts per hour

Microkernel[1] - the basis for Evokernel, QNX, HURD are examples.

Hypercomputing - Non-Turing computers or Post-Turing computers, computation.
ACM March 2013 p.74-83 Turing’s Titanic Machine?

Bibliography

Turing's Pioneering work on Artificial Intelliegnce
Computing Machinery And Intelligence By A. M. Turing
Mind - A Quarterly Review Of Psychology And Philosophy
Mind, 1950 Q4 PDF version
Mind, 1950 Q4 Word 2003 version
Mind, 1950 Q4 Text version
ACM, 2010 05, p.108-116, Genetic Algorithm to patch code.

Artificial Life Books
Operating Systems Courses

John McCarthy [1927-2011] A pioneer in Artificial Intelligence
AMC 2012-01 p. 28-29

Random Notes on Computer Science

ACM Godel Prize in Algorithms and Computing Theory.
Artificial Life[2]
Function-based Mathematics -- all variables must be specified ahead of time. Evolution doesn't get to do this.
Spectral Graph Theory
Larrabee chip from Intel. Shared MIMD architecture.
Amdahl's Law[3]
Parallel Programming on Wiki[4]

Algorithm Visualization Portal[5]
Stanford Engineering Everywhere[6]. Stanford U. internet courses.

Programming Language Notes:

From ACM, November 2010, "Sir, Please Step Away from the ASR-33!" p. 56, by Poul-Henning Kamp.

Main Idea: Programers self limit programming language development by limiting idea expression to the ASCII alphabet. Thus guarenteeing compliance with the ancient ASR-33 Teletype. Mr. Kamp suggests using the UNICODE character set and text coloring.

Add italic and bold type to. Changing font type and size would be too subtle to communicate a different idea effectively.

So how to use it?
First, the primary language will be English.
Second, use non-latin glyphs for complex ideas.
This will make it easy to separate a forloop from something more complex.
Unicode.org divides the characters into Scripts, for human languages, and Symbols and Punctuation, for everything else. Scripts are subdivided into region and language. Thus divide the ideas among regions and languages. Be simple but consistent.

and text.
Bold
Plain
Italic.
Colored Text by use. Green for comments. Black for commands.

Programmers can define behavior for non-reserved glyphs.

Raw character strings are enclosed in double-quotes.
Raw lines for program execution will be in single-quotes and preceded by a tilde, `'print"Hello world."'

No end-of-line characters. Use line-breaks instead.

No braces in functions. Use comment lines to separate them.
Number or name the functions to. Layer them one inside the next.

for_001_Top()
   for_002_layer01()
   //for_002_layer01
//for_001_Top


Testable System Administration by Mark Burgess
ACM 2011 03 p.44

Great idea for maintaining systems. Ignore the current, incorrect state, and fix it by correcting each item in the current state to the known working state. Just go through the Configuration list and compare to the known good state. Problems, you don't have access to all a system's configuration. Some company won't allow access to it's program. In a broad case each configuration item is an atom and if they all work together, the whole system works. Each atom trusts the other to correct their own configuration. Thus the whole system works.

"The Most Expensive One-Byte Mistake" by Poul-Henning Kamep
ACM 2011 09 p 42
In C a char string is a pointer+string+null. This means every time the OS and processor access the string the length must be calculated, or calculated and stored once every time the program is run. A better method is pointer+lenth+string. No need to calculate the string length more than once, ever.

Dr. Dobb's Heterogeneous Computing

Dr. Dobb's Interview with Alan Kay July 10, 2012

Dr. Dobbs Kernel Exploits

SciAm June 2016 p. 44 Rise of AI by Yoshua Bengio. Article on learning with deep neural networks. Mentions the Canadian Institute for Advanced Research (CIFAR)[7] and a research effort led by Geoffrey Hinton around 2005.

Multicore/Threaded Programming

Professional Multicore Programming: Design and Implementation for C++ Developers
By Cameron Hughes and Tracy Hughes

C# 2008 and 2005 Threaded Programming: Beginner's Guide
Gastón Hillar


The Last Great Leap in Computer Science

Was in 1988 when Networking Computers, Object Oriented Programming, the Mouse, and Graphical User Interface (GUI) all reached wide-spread use. Since then we've just gotten better at them.

Big O Notation[8]

Main Article: Big O Notation
Big O Notation is a mathematical notation that describes the limiting behavior for a function when the argument tends toward a particular value or infinity. This belongs to the Bachmann-Landau Notation[9] or asymptotic notations notation family.

Induction

Main Article: Induction
Mathematical Induction and Inductive Reasoning.

Internal Links

Parent Article: Main_Page