Computer Science
Introduction to C++: A video guided tutorial

A simple video introduction to C++, this will span from setting up the compiler to early objects, vectors, arrays, data verification and other sorts of material.

I will go out of my way to help clarify any and all issues that my students may encounter, I want to help everyone learn to the best of my ability.

Introduction to Java: A video guided tutorial

A simple video introduction to java, this will span from setting up the compiler to early objects, arrays, simple data verification and other sorts of material.

I will go out of my way to help clarify any and all issues that my students may encounter, I want to help everyone learn to the best of my ability.

Microsoft Excel - Video Lessons & Training

This course will be a complete lesson / teaching tool related to Microsoft Excel. It will have sections and information applicable to all experience levels. It will be updated regularly with additional lessons, tips, and demonstrations of how you can get the most out of Excel.

This course will be taught using Microsoft Excel 2010, but most of the functionality can be found in Excel 2007/2003 (although it may be in a different location). I will not be focusing on the Mac version of the product as I do not have it.

Intro to MySQL

This is a mini-course on MySQL that will only last a couple weeks. There will be a sandbox MySQL database to play with on the UReddit server here - username is "sandbox" and password is "password".

Update: this class is now over. Additional topics may be added at a later date by request.

Intro to Web Development with HTML/CSS

This class is an introduction to web development with HTML and CSS. No background is presupposed. I will send PMs via UReddit with updates and links to the material will be posted to this subreddit.

Please note that this is not a technical rundown of HTML tags and CSS rules, nor is it a series of code examples followed by explanations as neither of those expositions is conducive to learning. The purpose of the material written for this class is to communicate the motivations, principles, and mechanics underlying the design and use of HTML and CSS in developing a website. It is aimed at absolute beginners with the goal of teaching general skills that can be applied to novel tasks rather than explaining "how to do X" for any particular X.

A complete course on programming for beginners

A full course on programming designed for the beginner on up. I originally started this in 2009, and I have recently been adding new lessons as well as video lessons. I plan for this to continue for a very long time to come. Over 120 lessons, and over 75 video lessons and growing daily.

Web Programming with Ruby on Rails

Ever want to know how Twitter, or Reddit, or Facebook was built? What if I told you, in 10 short weeks you could have the skills and knowledge to have replicas of these sites up and running production ready on the internet. In this course you will learn about web programming, databases, Ruby, and the Rails framework which is used to build popular websites. You'll walk away with a solid foundation of programming, and enough to get started building any website you can dream up.

This is the online version of my course that I teach at the University of Texas.

Analyzing deep system stealth malware

This is a meta-class utilizing existing classes that will lead you step by step toward a deep technical understanding of how stealth malware works, with a particular focus on kernel level malware. A series of free video recordings of paid multi-day training classes will cover: how intel assembly works, OS internals that can be manipulated by malware, how the Windows PE binary format works, and finally the techniques used by stealth malware to hide and persist on an infected machine. But the class will teach you how you can still detect them if you have the right knowledge and the right tools. To complete all the material in this class will take approximately 50 hours, not including time spent on labs.

Computer & Home Network Security

I would like to help people secure their home networks as well as share my knowledge and experiences that I've had with computer security and securing networks.

Topics we will cover:

DHCP, DNS, ARP -> How they work and how they are spoofed How to setup your home network to be secure, and how to get the most out of having a LAN

What hackers look for in a network? How to keep yourself secure and not become a statistic in identity theft

Current Events in computer security and how they apply to the normal user

Programming in PHP

Over 20 million websites are using PHP as their method of displaying content to you, the user.

PHP is an open source language constantly being modified by thousands of people. The syntax of PHP is very equivalent to many other programming languages, such as C.

Learning the syntax of one language can ultimately teach you the syntax of many other common-ground languages.

In this course I would be developing an easy to follow syllabus starting off with the bare essentials, gradually working our way up to Object Oriented Programming (OOP) in PHP and eventually developing our first application that users can interact with.

Google Group:!forum/php001

YouTube Playlist:

Intermediate Java -- A video guided tutorial series to getting you a job programming

New videos will be released every Weekend

This course is a continuation of the ever-popular "Beginners java" courses that were up quite some time ago. These will continue off of that same mindset. These will handle all the information that you will need to land yourself in a job interview and (hopefully) get you through it.

Basic Python Programming

This course will hopefully give you a good sense of what python is like from the very beginning. By the end of the lessons you will have a good sense of what is going on in the course. Start from learning what is python and the many useful applications that it can be applied though including gaming!

Introduction to Haskell

Haskell is a programming language that changes the way you think. Introduction to Haskell is being taught at the University of Virginia as a 1-credit pass/fail course offered this Spring 2013.

Lectures will be posted every Tuesday.

Microsoft Excel Beginner/Intermediary Course

In this course you shall learn Microsoft Excel using 2013 version. However most of the functionality is valid in 2010/2007 as well.

Game Development with Unity 3D and C#

Have you ever wanted to make games, but weren't sure where to start? This is the course for you! Learn how to make games, going from Pong to a simple roguelike in the free and awesome game engine Unity, with the C# scripting language (Javascript and Boo users can still follow along, but it might be more confusing).

This course will mostly focus on the broader aspects of game development in general, which can be used with any toolset as long as you make games, but by the end of the course you will be very competent with Unity and C#.

Introduction To Office 365

A basic look at the inner working of the new Office 360 environment from Microsoft. This is a simple introduction to the features and workings of Office 365. A full "nuts and bolts" course will be planed soon

Java Programming with Eclipse

An introductory course to programming. We use the Java programming language and the Eclipse Integrated Development Environment.

Graphics and Data Visualization

Data has the potential to change the very course of human history, so why do we waste such a valuable resource on unreadable charts and misleading graphics? This course is a 1-credit class being taught at the University of Virginia in the Fall 2013 semester.

Lectures will be posted on Tuesday nights.

Logic 101

These lectures cover introductory sentential logic, a method used to draw inferences based off of an argument's premises. Logic is ubiquitous--individuals thinking of pursuing a career in law, computer science, mathematics, or social science must have a firm understanding of basic logic to succeed. Even someone who occasionally programs in Microsoft Excel would benefit greatly.

Jquery Promise Objects

Jquery Promise Object Use.

Developing Cross Platform Application using Qt, PyQt and PySide

Python is such a great programming language! Being discovered this after years of using C++, I found that it simplicity and power somewhat too intriguing to ignore. In this course I would like to explore more on Qt application development using either Qt/PyQt/PySide.

How to get more followers on Twitter

Through this course you will learn how to make your Twitter presentation effective, which are the best websites to gain twitter followers, how to create useful contacts with influential Twitter users, which are the most popular Twitter marketing tools and many more.

Learn Android by building a Twitter app

I am building an Android tutorial with app-first approach. Usually, people learn concepts first & then implement it an app. But most of the devs (including me), usually like to learn a new technology by start developing an app in it. I am trying to do the same at Codelearn & currently focussing on the Android tutorial.

The plan is to create a full-fledged production ready Twitter app from scratch. It is just 30% complete for now. So I have decided to keep posting the links of the lessons as & when they become available.

Since it is a hands-on tutorial, I have also built an Eclipse plugin, that would test your app at the end of every lesson to ensure you are building it right. You can either choose to just read the tutorial but I would recommend installing the plugin, trying the tutorial & get it tested from our server. I have written bunch of Robolectric tests that would test user's app at every lesson.

The tutorial is work in progress & some lectures are already live on the website. I have put some of the lessons & I will add one lesson every week

ZoomCharts - Time Chart - How to make a chart


To start using a Chart in your web application, you need to download our SDK. Then, just include the library file like this:

<script src="js/timechart.js"></script> - for Time Chart
<script src="js/piechart.js"></script> - for Pie Chart
<script src="js/netchart.js"></script> - for Net Chart

Premium Technical Support users can use cloud hosted version that is always containing the latest stable release of the Chart. Making a chart

With the library file included in your web page, you can now create a chart.

First you need to locate the HTML element that will contain the chart. Make sure it can be referenced easily - assigning id property will do the best.

<div id="chartContainer" style="width:300px;height:300px"></div> 

And use the following code to create a Time Chart object:

chart = new TimeChart({
container: document.getElementById("chartContainer"),
data:{url: "myDataUrl"}

Check live example on jsFiddle: Customizing the chart

When you initialize your chart you have to pass a settings object to it. The settings object contains all the configurable options that influence the look and feel of the chart.

Minimum required settings:

container - the HTML element to create chart into.
data url or function or static data.

You can alter the options after the chart is initialized, by calling chart.updateSettings(changes). Specify only the options that you want to change. For example: chart.updateSettings({height:250, width:400}); would change the height and width of the chart on the fly.

DVSL Charts use a javascript object structure to define the settings. The settings object contains named properties. Each setting value can be either:

string - "good"
number - 52
boolean - true|false
another object - {x:3, y:6, z:"good"}
an array - [1,2,3,4]

Supported browsers

DVSL Charts uses native javascript to render charts and does not require any third party plugins. Browser Versions supported Internet Explorer 9.0+ Firefox 3.5+ Chrome 4.0+ Safari 4.0+ Opera 10.5+ iOS 3.2+ Android 2.1+

DVSL Charts should work on any browser that supports the HTML canvas element with text rendering support. Performance

DVSL Charts are designed to deliver the best interactivity. We aim to deliver 60 FPS on desktop machines and minimum of 15 FPS on mobile devices.

Performance is also affected by the selected theme. Simpler themes can improve the performance of your chart. Hosting DVSL Charts on your server.

You can always choose to either use the cloud based version of the library, or you can download a copy of the library and store it locally in your preferred location.

If you choose to store the library locally and if you decide to move the assets folder to a non-default location, make sure to pass a proper assetsUrlBase setting, when initializing your chart.

ZoomCharts - Time Chart - Architecture

Overall architecture

ZoomCharts has been built with the idea of visualizing large amounts of data. To do so the internal architecture consists of two layers:

Data cache that stores all the data. It has very little overhead and can accommodate millions of objects easily (limited by browser memory).
Display layer. It selects what objects to display from the cache. Usually this ranges from few hundreds up to few thousands.

Data cache

The data cache stores and requests the data that the chart needs. It can work in two modes:

full data - all data is added to the chart using chart.addData, chart.replaceData or set into configuration using
incremental data - a data callback function or URL is provided. The chart dynamically loads more data as user navigates the chart.

Display layer

Display layer handles all the interaction with the user and renders data. All Charts use a common pipeline to render data. Here is an overview.

Display pipeline Pending changes

Chart API calls only update configuration. An animation frame is requested and all computationally intensive changes are postponed until rendering of next frame. This approach minimizes computation overhead when performing multiple changes in the chart.

It's possible to force evaluation of all changes by calling chart.paintNow(). Filters

Filter is a javascript function that is called for each object to determine if it has to be shown or not.

See Interactivity/Filters section for what filter functions are available. Building objects

For each visible data item a chart object is created.

The object building is incremental - only the minimum necessary changes are made to transition from previous state.

See Chart Basics/Object Structure on what objects are created for each particular chart. Style computation

Style determines each object's color, label and other visual features.

Style computation is a flexible system that allows defining both a general look and feel and customizing style for each object individually.

There are several ways how to define the style:

initial style is applied from chart settings
data can contain style attribute
JavaScript style function can be called on each chart object

See Chart Basics/Style on what style attributes are available for each chart object and how how to specify them. Compute coordinates

When object final style is known, chart layout takes place. The layout usually is implemented with transition animations to ensure visual continuity. Painting

Finally the chart is painted on HTML5 canvas.

How to Use ZoomCharts Network Graph - company network, with icons

Managing company networks is made simple with ZoomCharts’ Company Network, With Icons tool. Information can be stored, viewed, and changed easily, as soon as business changes occur. A comprehensive range of customization options lets you tailor the look of your graph to suit your company’s specific needs.

ZoomCharts’ line of advanced data visualization software is ideal for any industry looking to use their data in new ways, including science, medicine, business, law, administration, information technology, transportation, media, marketing, engineering, consulting, education, and more.

  • Present large amounts of information in an easy to understand visual display
  • Interactive and customizable graph features fluid data points
  • Icons and descriptions make for easy data point recognition

Step 1 Click on a node to expand its neighbors.

Step 2 Drag and drop nodes to rearrange the graph.

Step 3 Swipe up/down with your mouse scroll pad to zoom in/out of the graph.

Step 4 Right clicking on a node will give you more options.

Check out ZoomCharts products:

Network Chart Big network exploration Explore linked data sets. Highlight relevant data with dynamic filters and visual styles. Incremental data loading. Exploration with focus nodes.

Time Chart Time navigation and exploration tool Browse activity logs, select time ranges. Multiple data series and value axes. Switch between time units.

Pie Chart Amazingly intuitive hierarchical data exploration Get quick overview of your data and drill down when necessary. All in a single easy to use chart.

Facet Chart Scrollable bar chart with drill-down Compare values side by side and provide easy access to the long tail.

ZoomCharts The world’s most interactive data visualization software