Pratowski CompSci Page
Resources for your Educational Adventures
Web & Apps
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
http://www.nand2tetris.org/ ("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.
- Dictionary of algorithms and data structures
This is just another good reference.
- Meet Alice
When people think of adventures, they often think of Alice in Wonderland. Lewis Caroll was also a mathematician. "Alice" (the computer program) is a free download from Carnegie Mellon. This program will teach you how to write programs. It's easy. The tutorials are great. You bring objects into a 3-D environment, and tell them what to do. Be creative. Click here (www.Alice.org) to go to the site for the free download.
- Learn Java
(Officially the most popular programming language, an definitely one of the most useful)
When computer science gets beyond theory, to actual programming, what language will you use? Now that Oracle (the largest enterprise software company in the world) is buying Sun (the creators of Java and other programming resources), we can see what technologies will still be relevant in the future. Learning Java will be very useful, and it will connect you to a community of creative people. Instead of putting the Java links here, I gave Java its own page on my site. Click here to go there.
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
- Meet Alice. Get a (free) copy of the program. Learn how it works.
- Use the Alice program to create basic animations.
- Become more familiar with Alice and how programming works.
- Be able to give characters simple directions.
- Understand what objects and methods are.
- Be able to create more complex methods.
- Begin -just begin- to learn about writing code (and how that is similar to the Alice program).
Unit II – Thinking
- Know’ what computer science is and what it is not.
- Know what it means to think like a computer scientist.
- Be familiar with the history of computing and calculating.
- Have a basic understanding of how a computer works.
- Know in detail how the basic gates (and, or, nor, not, etc.) work.
- Be able to define things in terms of themselves (recursive definitions).
- Be able to write recursive methods.
- Be able to treat procedures and data as one and the same (first class procedures).
- Be able to give variables useful names (abstraction).
- Know what an algorithm is. Think about creating algorithms.
- Learn about Godel’s Incompleteness Theorem.
- Be able to assess computability for various problems.
- Learn about models of computation.
- Understand what “tractable” and “intractable” problems are.
- Know what “NP completeness” means.
Unit III – Programming
- Become familiar with ASCII code, bits, bytes, and how code works with circuits.
- Think about how networking happens and how software can be compatible.
- Know how web sites and hypertext work. This is a link between writing and programming.
- Be familiar with UTM’s Lamda Calculus (David Evans).
- Understand how “Truth” and truth tables relate to computing; think about binary numbers and switches.
- Be aware of the counting principles involved in computing.
- Understand the types of loops you can create.
Unit IV – Object-Oriented Programming with Java
- Know what objects are and what object-oriented programming is. (Remember Alice?).
- See how the Java language compares to other languages.
- Become familiar with classes and how to create a class.
- Learn about packages and how to create packages.
- Create variables. Know the types of variables and how to use identifiers.
- Learn how to cast a variable into a different type.
- Learn about operators.
- Become familiar with different types of input (data types).
- See what types of output are possible.
- Learn about scope. Know what “public” and “private” mean in the Java language.
- Use code to create objects in Java.
- Learn about programming structure and syntax in Java.
Unit V – Simple Objects in Java
- Create a conditional statement.
- Create a loop.
- Be aware of the resources available on the sun.java web site.
- Become familiar with some standard classes.
- Learn about the object class.
- Learn about the string class.
- Learn about wrapper classes.
- Learn about the math class.
- Learn about several abstract classes.
- Learn how to use inheritance and polymorphism to save yourself work.
- Practice object-oriented program design.
- Analyze several program to see the organization.
Unit VI – The Graphical User Interface (GUI)
- Create a window and set the dimensions.
- Put content in a window.
- Create a check box.
- Create a text box.
- Create a drop-down menu.
- Create different environments.
- Learn how to authenticate various clients.
- See how cryptography works.
Unit VII – User Input
- Be familiar with the different types of user events.
- Write a program that can respond to mouse clicks.
- Write a program that can respond to keyboard input.
- Create “sliders” and other user-controlled objects.
Unit VIII – More Complex Programs
- Learn more about program design and analysis.
- Know the software development life cycle.
- Create simple recursive methods. Know the general form.
- Write recursive methods.
- Create two-dimensional grids.
Unit IX – Data Structures
- Become familiar with how to use arrays and array lists.
- Create one-dimensional arrays.
- Create array lists.
- Create two-dimensional arrays.
- Create linked lists (including circular and doubly linked).
- Analyze the run time of linked lists vs. array algorithms.
- Know what stacks are and how to use them.
- Create and use queues, including enqueue and dequeue.
Bcome familiar with the following terms:
- Binary trees
- Binary search trees
- Tree traversal
- Recursive tree algorithms
- Binary expression trees
- Run time analysis
- The hierarchy
- The interface
- Linked lists
- Circular linked lists
- Doubly linked lists
- ArrayList and LinkedList
- Run time of linked lists vs. array algorithms
- the map interface
- run time of set and map operations
- Stacks and queues
- Priority queues
- Run time analysis
- The map interface
- Run time of set and map operations
- Sorting - O(n2) sorts, recursive sorts, algorithms in java
- Searching – sequential, binary, etc.
- “Quicksort and the golden ages” (David Evans, VA Tech))
- Hash coding
- Type compatibility
- Abstract classes
- Two-dimensional grids
After exploring all of the above-mentioned topics, please proceed to the Java page for more adventures.
Web & Apps
Web Site Author: Edward Pratowski (firstname.lastname@example.org)