Monthly Archives

August 2012

Computer Programming III

Tentative Syllabus for Computer Programming III

August 30, 2012

I was never a man to stick to schedules. It's not that I like to be late, or don't want to be on time. I just never am. Something always comes up in my life. That's why the following list is tentative and subject to change at any moment without prior notice. If it has been longer than a week and you want to move ahead please remind me to make a new post or share links that cover the topics.

Topics to be covered:

  • Generics
  • Stacks & Queues
  • Link Lists
  • Binary Trees
  • Multiway Trees
  • Hash
  • Sorting
  • Search Algorithms
  • Randomize Algorithms
  • Computing Complexity
  • Graphs
  • Intro to machine instructions
  • Intro to Multi Thread

Other topics, sub-topics and dates are soon to come.

Computer Programming III

Computer Programming III

August 30, 2012

Please read my assumptions post prior to this post.

After learning the basics of programming and maybe even Object Oriented Programming (OOP) the natural continuation of is data structure and algorithms. Many universities have different names, but most of them teach data structures as the third semester computer science majors. I think that after about a year within the program you really need to learn to expend. In order to achieve this you will need the terminology. You need the understating of link lists and trees, stacks and queues and so on. You also need to understand how to read and implement algorithms. With time, you will find I have a very different thinking method, and a strong opinion on the state of education. Not only in the United States, but world wide as well.

Post that will be filled under this will be divided into sub categories. There are 3 major topics that needed be addressed before you can move on to any other aspect of programing, computer science, or related specialties.

Topic #0: Data Structures. I do believe algorithms ought to be thought from day one of programming. For the time being, the first few posts will be data structures to serve as a jumping board to the deep end of algorithms.

Topic #1: Algorithms. These will be where I dwell the most. Specifically how to use them to make your life a whole lot easier.

Topic #2: Languages. Although discouraged, I do believe that as a programmer you will need to gain the ability to learn new languages. Implementations related to the above topics will be posted for now, in 3 languages, python, c and java. I don't promise I will make examples in all the three, but I will do my best to share your exposure to code in all 3 languages.

We will start by looking at some simple data structures and than go back and fourth among all these topics. All of the posts might include links to other posts, categories or off site references. I will post a list of references as soon as I can and I will try to keep it most up to date.

Computer Programming III

My first assumptions...

August 30, 2012

Making assumptions are never an easy task, yet we have to make them every day. You might not realize it, but our brain is in fact lazy and wants to take shortcuts. For example, when someone asks you what's the time you have to make an assumption of in what way to tell him the time. is it 05:30 or 17:30? is it quarter to six or five forty five? Similarly I have to make some assumptions on you are. I will try to keep this short and to the point.

NOTE: Assumption list is in randomize order.

Assumption #0: You can read and write. I know this sounds silly, but I have to make that assumption to cover my basis. As long as we mention it, I encourage you to write to me. Writing is fun, but it's nice to read your thoughts as well.

Assumption #1: You have seen programming. I don't care what language you have learned, but I assume you know the basics of programming well enough to move on. I will try to put a document together that will include what I consider basic of programming. That being said, the document will be insufficient to learn from for a new programmer. For starter guides I recommend looking elsewhere.

Assumption #2: You want to know more. What I write is one way to look at things. Everyone learns different and There is no uniform way to satisfy such needs. For that reason I want you to go out and look at other resources and find your comfort zone. I also find that most of my previous students tend to learn more when they wanted to learn more.

Assumption #3: You have Internet access. This might be trivial, but again I want to cover the basis. I will try my best to have pdf's you can download for offline usage. As a programmer, having online access is sometime beneficial.

Assumption #4: MATH. I know this is a touchy subject, but you do need understanding of discrete math and algebra. Other math might help, but the rest could be learned on the go. Your logic skills need to be in play. Again, I will get back to this, but at this point I have to assume this much from you.

Assumption #5: Hardware & Software. All you need is either your daily laptop. You could have a seprate computer, but it's an over kill at this point. I am still debating what language I will use. I have a Mac and Linux. I highly recommend using one of these options. Ubuntu is not bad, I wouldn't use the latest one, version 10 or 11 will be enough. If there is any software to install I will make note of it and update this post.

This list may be updated from time to time. Assumptions made are subject to change at anytime without notice. You have been warned. If there are any you would like to add I will advise you to email me or leave it in the comments and it will be added.


Post 0 - Beginning

August 26, 2012



After a long time I have decided to build my own blog. This is the very first post in what I am hoping will become a regular outlet for me. I guess as part of my first post let me tell you a bit about me and a lot about what this blog is about. My own history really doesn't matter much to any topic that will be discussed on this blog. What you do need to know is that I am in my late 20's and soon to complete a BS in CS. I have worked a programmer for the past decade and love to teach. That's about as much information that is relevant for the website.

So what is this blog is about? Well, there are a few parts:

  • Blog Posts. These are the blog posts I will write from time to time. These include and are not limited to links to articles with my thoughts about them. Interesting problems I encounter and hopefully have solved. Random stumbled upon facts and other bunch of text as I see fit.
  • Courses. I have gone through college more the once in a sense. There is a basic structure in which anyone can learn to program and enjoy a computer for more than just Facebook. For example I might have course 0: introduction to a pc and course 1: introduction to programming. Keep in mind that I might have different versions of each course. For example course 1 might be offered in python or in java. So each will get there own unique section.
  • Articles. This is sort of off topics ideas I research from time to time and do not belong to an idea in particular. An example would be if I wrote how to sum up the numbers from 1-999 that are divisible by 3 or 5.
  • Hardware. I will admit I have a soft spot for hardware, sometimes more than code. These will be the ardiuno and¬†raspberry pi type posts. I will try to get all my experimentation online as I can.
  • Cheat Sheets. This is my own personal sort lists of stuff I always look up. Things like how-to do this in terminal or the regular expression to validate email.
  • Links. Like the title may hint, these are links to off-site pages I find good to know about.

This is not a limited list. As I see it now, it's a good start for what I want to do. As time goes, we will see how well this structure is. My guess is that by the time the site grows, this structure will change and evolve. It is still good to know where to start. See, knowing where to start is often the problem. It took me a while to get this far, and there is still so much I would like to do. But that is another topic for another day. In the mean time, what is here will have to do.