Pratowski CompSci Page Resources for your Educational Adventures
Home | Math | Comp Sci | Java | Electronics | Music | News | Web & Apps | Tutoring, etc.

Computer Science

Like "Alice in Computer Land," the adventure begins here.
This page will give you links to helpful resources, and a guide to the main topics in the field.
As with many adventures, you should find your own path through this outline.
Soon, you will find resources that connect you to helpful people.
When you gain more skills, you can pay it forward and help others.

How computers work, from the ground up ("Nand to Tetris")
First you learn about the logic gates, then hardware, chipset, machine language,
every layer up to Java programming.
Here is the TED talk about it:

The book, resources, and other stuff is all free on the course web site.

More Resources for You

Now, let's get to the actual syllabus.
Follow this sequence of topics, like a guide, and you will be well on your way.
Make it your goal to get familiar with one topic per day.
At some point, each numbered topic here will link to a page with much more info and resources.

    Unit I – Alice in Computer Land

  1. Meet Alice. Get a (free) copy of the program. Learn how it works.
  2. Use the Alice program to create basic animations.
  3. Become more familiar with Alice and how programming works.
  4. Be able to give characters simple directions.
  5. Understand what objects and methods are.
  6. Be able to create more complex methods.
  7. Begin -just begin- to learn about writing code (and how that is similar to the Alice program).

  8. Unit II – Thinking

  9. Know’ what computer science is and what it is not.
  10. Know what it means to think like a computer scientist.
  11. Be familiar with the history of computing and calculating.
  12. Have a basic understanding of how a computer works.
  13. Know in detail how the basic gates (and, or, nor, not, etc.) work.
  14. Be able to define things in terms of themselves (recursive definitions).
  15. Be able to write recursive methods.
  16. Be able to treat procedures and data as one and the same (first class procedures).
  17. Be able to give variables useful names (abstraction).
  18. Know what an algorithm is. Think about creating algorithms.
  19. Learn about Godel’s Incompleteness Theorem.
  20. Be able to assess computability for various problems.
  21. Learn about models of computation.
  22. Understand what “tractable” and “intractable” problems are.
  23. Know what “NP completeness” means.

  24. Unit III – Programming

  25. Become familiar with ASCII code, bits, bytes, and how code works with circuits.
  26. Think about how networking happens and how software can be compatible.
  27. Know how web sites and hypertext work. This is a link between writing and programming.
  28. Be familiar with UTM’s Lamda Calculus (David Evans).
  29. Understand how “Truth” and truth tables relate to computing; think about binary numbers and switches.
  30. Be aware of the counting principles involved in computing.
  31. Understand the types of loops you can create.

  32. Unit IV – Object-Oriented Programming with Java

  33. Know what objects are and what object-oriented programming is. (Remember Alice?).
  34. See how the Java language compares to other languages.
  35. Become familiar with classes and how to create a class.
  36. Learn about packages and how to create packages.
  37. Create variables. Know the types of variables and how to use identifiers.
  38. Learn how to cast a variable into a different type.
  39. Learn about operators.
  40. Become familiar with different types of input (data types).
  41. See what types of output are possible.
  42. Learn about scope. Know what “public” and “private” mean in the Java language.
  43. Use code to create objects in Java.
  44. Learn about programming structure and syntax in Java.

  45. Unit V – Simple Objects in Java

  46. Create a conditional statement.
  47. Create a loop.
  48. Be aware of the resources available on the web site.
  49. Become familiar with some standard classes.
  50. Learn about the object class.
  51. Learn about the string class.
  52. Learn about wrapper classes.
  53. Learn about the math class.
  54. Learn about several abstract classes.
  55. Learn how to use inheritance and polymorphism to save yourself work.
  56. Practice object-oriented program design.
  57. Analyze several program to see the organization.

  58. Unit VI – The Graphical User Interface (GUI)

  59. Create a window and set the dimensions.
  60. Put content in a window.
  61. Create a check box.
  62. Create a text box.
  63. Create a drop-down menu.
  64. Create different environments.
  65. Learn how to authenticate various clients.
  66. See how cryptography works.

  67. Unit VII – User Input

  68. Be familiar with the different types of user events.
  69. Write a program that can respond to mouse clicks.
  70. Write a program that can respond to keyboard input.
  71. Create “sliders” and other user-controlled objects.

  72. Unit VIII – More Complex Programs

  73. Learn more about program design and analysis.
  74. Know the software development life cycle.
  75. Create simple recursive methods. Know the general form.
  76. Write recursive methods.
  77. Create two-dimensional grids.

  78. Unit IX – Data Structures

  79. Become familiar with how to use arrays and array lists.
  80. Create one-dimensional arrays.
  81. Create array lists.
  82. Create two-dimensional arrays.
  83. Create linked lists (including circular and doubly linked).
  84. Analyze the run time of linked lists vs. array algorithms.
  85. Know what stacks are and how to use them.
  86. Create and use queues, including enqueue and dequeue.
  87. Bcome familiar with the following terms:

  88. Trees
  89. Binary trees
  90. Binary search trees
  91. Tree traversal
  92. Recursive tree algorithms
  93. Binary expression trees

  94. Run time analysis
  95. Collections
  96. The hierarchy
  97. Iterators
  98. The interface
  99. Linked lists
  100. Circular linked lists
  101. Doubly linked lists
  102. ArrayList and LinkedList
  103. Run time of linked lists vs. array algorithms
  104. the map interface
  105. run time of set and map operations

  106. Stacks and queues
  107. Priority queues
  108. Run time analysis
  109. The map interface
  110. Run time of set and map operations
  111. Sorting - O(n2) sorts, recursive sorts, algorithms in java
  112. Sorting
  113. Searching – sequential, binary, etc.
  114. Mutation
  115. “Quicksort and the golden ages” (David Evans, VA Tech))
  116. Hash coding
  117. Type compatibility
  118. Abstract classes
  119. Interfaces
  120. Two-dimensional grids
  121. After exploring all of the above-mentioned topics, please proceed to the Java page for more adventures.

    Home | Math | Comp Sci | Java | Electronics | Music | News | Web & Apps | Tutoring, etc.

    Web Site Author: Edward Pratowski (