Wednesday, June 30, 2010

Information Security

One of the most important things facing computer technology is Information security. Without it we would be hacked all the time by expert programmers, and other evil IT guys. There is no simple way to secure information. Billions are spent on computer security, but the attacks are still coming at the same frequency.


see no evil, hear no evil, speak no evil. If only security were that easy, but it is not. There are many risks when getting on the Internet with any devices. Here are a few of the most common attacks done over the Internet: Trojans, Virus, Spyware, Worms, Honeypots, DNS(Denial of Service) Attacks, Logic Bomb, Spam/Adware, and Botnets. Overall, companies lose millions of dollars with these criminal acts. Employees of companies are the largest security threat to a business. Employees will write their passwords down, or surf the Internet which gets their Work computer infected, etc...

Monthly security newsletters are a great way to keep up with new security vulnerabilites. Here are a few newsletter websites to look at:
Sans
Schneier
MS-ISAC

Here are a few links to Network Security Solution companys:
terremark
Stanley
symantec
Most of their goals include: preventing data theft, stopping identify theft, avoid the legal consequences of not securing information (Social Security Cards, medical records etc.), maintain productivity(example: no Spam slowing employees down), and foil cyberterriorism.

Thursday, June 24, 2010

Confusing Programming terms

List of confusing programming terms:

[1]Confusing terms:: attributes-the data contained in an object; the characteristics of an object that will be implemented as properties. class-a program structure that defines an abstract data type. class declaration-defines a class and member variables, properties, events, and methods. objects (term can also be called class objects)-instances of a class that contain data and actions. derived class-a class that is based on another class. operations-actions performed by class objects. methods-a sub-procedure or function that is a member of a class, and it performs some operation on the data stored in the class.

procedures-are a set of programming language statements that are executed by the computer. functions-are specialized routine that performs a specific operation, and then returns or produces information. sub-procedures-are a collection of statements that performs a specific task and does not return a value. constructor-a method that is automatically called when an instance of the class is created.

encapsulation-the hiding of data and procedures inside a class. inheritance-an OOP feature that allows you to create classes that are based on other classes. modularize-to break an application's code into small, manageable procedures.

event-can be a click of a button or anything similar to this. event procedure-a procedure that an object executes in response to an event. keywords-programming language words that have a special meaning. programming language syntax-are rules that define the correct way to use keywords, operators, and programmer defined names. OOP-a programming technique centered on creating objects, and is a way of designing and coding applications that has led to using interchangeable software components. pseudocode-statements that are a cross between human language and a programming language.

example pseudocode:
initialize variable student's grade
If student's grade is greater than or equal to 50
Print "passed"
else
Print "failed"

[1]Glossary Starting out with Visual Basics 2008 fourth edition

CIS vs. Computer Science

Today, I will explain the difference between Computer Information Systems (CIS) and Computer Science (CS).

"computer science degree is more for research and development kind of companies. A CIS degree would be more for business related scenarios like banks, and other businesses. I have been told that there is more jobs related to CIS than computer science degrees." Mike M

Site --gives a great list of the types of jobs related to computers, and has lot of links to other resources of information. Site2 (this site really explains the different careers in the computer related field).

CS is geared more toward the theories of computers, and development of new technologies with computers. On the other hand, CIS is geared toward information from companies that have been organized in their computer systems. The nature of the work is slightly different. For example, a network engineer creates the network (with cables etc..), and does research on new ways to create a network. A network administrator maintains the network created by the engineer. Network engineers have Computer Science degrees, while network administrators have CIS degrees. This site really explains and gives statistical information about the different jobs and career paths. LINK

Overall, both degrees are great, but i am hoping my degree in CIS will give me more opportunities.

Alice

Alice is a free open source OOP programming language with an integrated development environment (IDE) that uses 3D models. Alice homepage The 3D models make it easy for anyone to create an animation for stories, games, etc... All you have to do is drag-and-drop what 3D model you want into the IDE program you are making. The instructions correspond to standard statements in a production OOP language. This can teach people OOP programming concepts much faster in Introduction Programming classes.

Students using Alice can better understand the relationship between code and the 3D models behaviors in the IDE. Here is promotional video about Alice. Video Site. Another great thing about Alice is that it is open source. Anyone can customize the Alice IDE program. All you have to do is follow the End User License Agreement. That is just legal stuff.

The future looks bright for Alice because of their partnership with Sun Microsystems Inc. Also the Alice developer team is improving Alice for the operating systems: Windows, Mac, and Linux. Teachers teaching programming should take advantage of this free educational software.

Note: don't confuse Alice with A.L.I.C.E. (Artificial Linguistic Internet Computer Entity) which is a artificial intelligence chat robot open source program.

Programming logic OOP

Today, i will try and explain further some of the concepts of OOP. Hopefully, this sheds light on the details of OOP concepts. First, you must know how to create a basic program. You need the logic of what is going to happen, and then you can design a flow chart, or create pseudocode (just plain English with no programming code). When you write the actual code you need to make sure there is no syntax(the way the code should be spelled etc) errors or compiler(this makes code run on a computer) errors. This PDF really explains these concepts in great detail. PDF site

[1]Diagram of how to create a running program logically:


Remember the last post i explained inheritance really well?(I hope). Well now i am going to go into encapsulation. The hiding of data and procedures(methods) inside a class is achieved through encapsulation. Visualize the class as a capsule around its data and procedures. The usually words to create this feature is to use "Private" or "Public" keywords (programming code) in code. Example diagram i made in Visio (graphical flowchart-design software by Microsoft):


Next in line is abstraction. It is a general model of something that includes only the general characteristics of an object. For example, the term dog is an abstraction. It defines a general type of animal. The term captures the essence of what all dogs are without specifying the detailed characteristics of any particular breed of dog or any individual animal. In real life there are specific dogs, each sharing common characteristics such as paws and fur. Lets say Dan owns a rooweiler named Menance and Jimmy owned a poodle named Fluffy. In this analogy, the abstraction (dog), is like a data type and the specific dogs(Menance, and Fluffy) are instances of the type. Here is a good site for another way to explain abstraction--site

Lastly i want to talk about polymorphism. No its not morphing time Power Rangers! Polymorphism is defining some common behavior for multiple types of objects and having a common code-base, which may or may not care about the different variation of a type. For example, a dog kennel takes domesticated dogs. There are many breeds of dogs, but the kennel knows it can take any 4 legged dog and be compatible. Dog in general is polymorphic in a way. This site explains polymorphism in more detail--site

Overall, don't expect you the reader to grasp this concept right away. It is very high-level programming, and i am still trying to master it as well, but once mastered, your programs will become exquisite. These explainations are just part of what can be done with OOP.

[1]Programming Logic and Design, Introductory, Fourth Edition
[2]Starting out with Visual Basics 2008 fourth edition

Wednesday, June 23, 2010

Object-Oriented Programing

Object-Oriented Programming (OOP) is a type of programming approach that involves using "objects" (data structures) consisting of datafields (attributes) and methods (classes). These along with tools from the specific OOP language help programmers design applications and computer programs.

Some OOP languages include: Common Lisp, C++, C#, ColdFusion, Delphi (Object Pascal), Java, PHP, Python, VBScript, X++ and many others. Here is a site that lists them: wiki (note it is Wikipedia, and there were too many languages to go through to verify the information. I will eventually use each one as a topic for this blog).

Some common features are seen in OOP, which include: abstraction, encapsulation, inheritance, and polymorphism. These features help reduce code duplication, and promotes code reuse. If these are mastered properly then programs can run more efficiently, have less lines of code, and become easier to manage and update.

Why is OOP so special? Why should anyone learn it? Well it is special because instead of the old model of having a program doing a list of tasks, a program is divided into classes that give the blue print of how an object should behave and be created. In OOP "objects" are models of real world objects. Lets say you have objects that are animals, and they want to walk in your program. OOP makes just one class that the animal objects can call in order to all walk. The old model had to keep creating the same walking code over and over for each animal.

Lets say their are many specie objects that are related, and have similar attributes. OOP makes coding this example simply with inheritance. You can have a main class animal that describes the attributes of an animal, then you can have different types of specie classes that describe specific specie objects' attributes under that. The species classes can inherit the same attributes as the main class animal with the inheritance feature. With the old module you had to create code over and over for each attribute for all the different types of species. [1] site of picture The picture shows a class inheritance hierarchy, but adds a few levels like pet and livestock. Mostly same idea.





These are just some of the ways that make OOP so powerful as a type of programming language. I will go into more detail and explanation when i talk about Programming Logic and Design.

Links: Procedural vs. OOP
OOP explained
Sources: i have include C++, C#, Java with BlueJ, and Visual Basics books. I may have more books on OOP fundamentals. In later posts i will get into more detail on OOP because it is such a broad topic. This was mainly just a small summary of what OOP is with an example of inheritance, objects, and classes.

Moodle

Moodle stands for Modular Object-Oriented Dynamic Learning Environment. It is a free open-source electronic learning software platform. Open source means developers can customize the software platform for the needs of educators that want to create online courses that are more interactive. Electronic learning is all forms of learning and teaching through electronic systems, which can be networked or not. Moodle is mostly seen as a course management system. About Moodle --This site goes into more details about Moodle.

Moodle is developed by project leader Martin Dougiamas, who started it back in the 90's. The first version came out in August 2002. The open source is GNU Public License (Note GNU doesn't stand for anything except for "GNU is Not Unix"). GNU is like UNiplexed Information and Computing System (UNIX), but it doesn't use any UNIX code. GNU is its own programming language. Another great feature of Moodle is that it can be installed on almost any Operating System.

Moodle keeps evolving as new designs are made and in turn creates new features. Some features that Moodle includes now are: Enrolment, Roles, Assignment Module, Chat Module, Choice Module, and many other features. Moodle really helps teachers in online courses, and improves the learning that a student can have through an online class. But Moodle is not just used by the school system, but also by government, healthcare, airlines, and many other area.

Overall, the future looks bright for Moodle. Looks like Moodle will always be open source, free, and ever expanding in the world.
Links:
http://moodle.org/ --Moodle's main site.
Example Log-in --Moodle log in example site
http://moodle.com/ --Moodle's commercial services site