Breaking News

General Programming Concepts



    • Machine code 
    • Registers, instruction address, heap, stack
    • Introduce assembler language

Programming Languages

  • What is the purpose of a programming language?
    • Easier to read and use than Assembler
  • How are programming languages categorized?
    • 1GL, 2GL, 3GL, etc.
    • Families (languages derived from, inspired
    •  by, or related to other languages)
  • What programming language should I use?
    • Different languages for different purposes
    • Different languages for different people

Networking and the Internet

  • What is the Internet?


  • What is a protocol?
  • What protocols do websites rely on?
    • ARP, TCP, IP (v4 and v6), HTTP, FTP, SSL
  • What is Http?
  • What is NAT?

Basic Programming Concepts

  • How do I store information?
    • Introduce scalar variables
    • Assignment operator
  • How do I do arithmetic?
    • Math operators (add, subtract, multiply, divide, modulo)
    • Logic operators (bit-wise and, or, xor, not, maybe shifts)
  • How do I make decisions?
    • if…else if…else
    • switch…case
  • How do I repeat instructions?
    • do…while loops
    • while loops
    • for loops


  • How do I group instructions?
    • Introduce functions

Basic Development Concepts

  • Where should I start?
    • Design
    • Pseudo-code
  • What is the "application life cycle"?
    • Iterative cycle
    • Design, prototype, development, maintenance
    • Stress the amount of time and effort spent on maintenance
  • How do I get from start to finish?
    • Bottom-up design
    • Top-down design

Basic Web Development Concepts

  • What do I need to write a website?
    • Minimum: simple text editor, FTP client (Windows Explorer, ftp command-line)
    • Freeware and shareware solutions: WYSIWYG editors, Eclipse, Notepad++, GUI FTP clients
    • Commercial solutions


  • How do I get started with HTML?
    • What is HTML and what is a simple example?
    • Stick to basic formatting: p, br, hr, h1…h6, ol, ul, em, strong, a
  • How do I get started with CSS?
    • What is CSS and what is a simple example?
    • Stick to basic selectors and properties (tag names only, background-color, color, font-family, font-style, font-weight, text-decoration).
    • Maybe introduce span tag.
  • How do I get started with JavaScript?
    • What is JavaScript and what is a simple example?
    • Keep examples simple: Hello world, simple arithmetic and string operations

Intermediate Programming Concepts

  • Do I really need to understand math and physics?
    • How does algebra help? Finding different ways to do the same math.
    • Unit conversions (em, ex, pt, px, in) and proportions/ratios (screen size, etc.)
    • Specific applications need trigonometry and physics.
    • Theory uses differential and integral calculus, multi-variable calculus, series mathematics, sometimes higher mathematics.
  • How do I group information?
    • Structs, arrays
    • Basic patterns: queues, stacks, linked lists
  • What is object-oriented programming?
    • Introduction to objects and inheritance
    • Private and public
  • How do I put instructions and information together?
    • Objects
    • States
    • Methods
    • Why should I use getters and setters? (Value validation and access.)
  • What is different between server-side and client-side programming?

Intermediate Development Concepts

  • How do I reduce my workload?
    • Design tools: flow charts, pseudo-code, prototypes.
  • How do I reduce my future workload?
    • Design with maintenance in mind.
    • Readable code.
    • Look forward, plan for expansion and integration.
    • Black-box mentality: good or bad?
  • How can I work as part of a team?
    • Coding conventions.
    • Documentation and documentation conventions. (Introduce JavaDoc?)


Intermediate Web Development Concepts

  • How do I progress with HTML?
    • More tags: table (caption, thead, tbody, tfoot, tr, th, td), div, dl/dt/dd, form (fieldset, input, button, etc.), abbr, acronym.
    • Encourage documentation.
    • Use div for layout, table for tabular data.
    • Attributes: id, alt, title.
  • How do I progress with CSS?
    • Expand selectors: class, id, descendant, child selectors.
    • CSS 2.0.
    • CSS files.
    • Encourage documentation.
  • How do I progress with JavaScript?
    • Script files
    • O.O.P. with JavaScript.
    • If not already done, introduce JavaDoc.
  • How do I reach the most people?
    • Designing an accessible website.
    • Setting compatibility standards.
  • How do I get started with server-side programming languages?
    • What are the benefits of a server-side programming language?
    • Examples of server-side programming languages: ASP, ColdFusion, JSP, PHP, etc.


  • What are SOAP and AJAX?
    • Introduction to SOAP and AJAX (and other similar technologies or protocols).
    • How are they used?

Media, Multimedia and Plugins

  • How do I go beyond text on my website?
    • Add images to your website.
    • Basic layout (float img and div).
  • How do I make a site that works well?
    • Basic design concepts.
    • Basic UX.
    • Include links to UX references (Nn/g, etc.).
  • What are plugins and how should I use them?
    • Any additional software (beyond the browser) is a plugin (PDF, Flash video, audio players).
    • Accessibility requirements.
    • When to use them and when to avoid them.


Introduction to Databases

  • What is a database?
    • Introduction to databases, tables, fields, and relationships.
  • What is SQL?
    • Introduction to SQL.
    • Basic CRUD statements.
  • What is normalization?
    • Define 1NF, 2NF, 3NF, 4NF, etc.
    • Recommend 3NF?
  • How should my database reflect my application (or vice versa)?
    • Define tables as they relate to O.O.P.
    • Introduce views and stored procedures.


Advanced Programming Concepts

  • What are design patterns and how do I use them?
    • Introduce some common design patterns (singleton, factory, template, etc.).
    • Include links to design pattern reference pages or useful books.
  • What are frameworks and how do I use them?
    • Introduce different frameworks, such as MVC and specific examples.
  • What are state machines and how do I use them?
    • Introduce FSMs.
    • Examples of how FSMs can be used to parse text.
    • Examples of how FSMs can be used to handle business logic.
  • What is application integration and how does it help me?
    • Define application integration.
    • Examples of importing, exporting, and non-proprietary file formats.

Advanced Development Concepts

  • What is requirement gathering?
  • What is quality assurance and how to I make it easier?
    • Introduce unit-testing.
  • What is usability testing?
    • Best practices.
    • Include links to reference pages or useful books.

Advanced Web Development Concepts

  • How do I progress with SQL?
    • Introduce JOIN, UNION, triggers, constraints.
    • Writing faster queries (benchmarking).
    • Writing more efficient queries. When to use SQL and when to use server-side code.


  • Is there more to CSS?
    • CSS 3.0.
    • Compatibility concerns.
  • What is Web 2.0?
    • Introduce social networking.
    • Introduce browser-based MMORPGs.
    • Introduce other web applications (banking solutions, shopping carts, etc.)
  • What is a CMS?
    • Blogs, webcomics.
    • Include example sites, particularly web development blogs.
    • Include examples of software (WordPress, Plogue, Drupal, etc.)
  • What is jQuery and how do I use it?
    • Benefits of jQuery.
    • jQuery libraries and plugins.
  • How do I use AJAX?
    • What are the benefits?
    • Using a JavaScript framework (like jQuery) with AJAX.
    • What are the shortfalls? Accessibility.
  • What is responsive web design?
    • Introduce RWD and mobile-first design.
    • Include links to reference pages.

Programming is lots of fun and extraordinarily useful. It allows you be creative and also opens up a wide range of new careers for you. If you want to learn how to program, read the tutorial below for an explanation of where to go and what to study.



Part
1
Choosing a Language

  1. 1
    Choose a programming language. Computer programming is done as essentially a set of written instructions that the computer follows (also known as binary coding). These instructions can be written in a number of different "languages", or which are simply different ways of organizing the instructions and text. Different languages tend to be used to create different types of programs, however, so choose a language that you feel is relevant to what you want to do. If you decide that a language does not suit your needs, you can always move on to a new language.


  2. 2
    Consider C, C++, C# and related languages. These languages are mainly used for creating standalone computer applications such as games. C and C++ are difficult languages to learn for a beginner, but not impossible. Learning them will give you an in depth understanding of not only programming (most programming languages inherit some concept or the other from C and C++), but also of how a computer works. They are popular and widely used, though C#, a language very similar to Java, is starting to become much more common.


  3. 3
    Consider Java or JavaScript. These are good languages to learn if you want to work on making web plugins (JavaScript) or mobile apps (Java). These languages are very much in demand right now, so they are handy to know. Keep in mind that Java and JavaScript are completely different languages, despite the similarity in names.
  4. 4
    Try Python. Python is a very versatile language used widely across several platforms. Despite being extremely powerful, it is an easy language for a beginner to pick up, so give it a try!
  5. 5
    Consider PHP. PHP stands for PHP: Hypertext Processor. It is a web programming language and relatively easy to learn due to its weak typing and popularity (popularity means there will be several useful tutorials on the language). It is a great language for server side programming.
  6. 6
    Don't limit yourself to these languages! There are tons of programming languages, all with varying uses. If you want to work as programmer, you will definitely need to know more than one, so learn as many as you can.
    • Your best bet will be to look at ads for the sort of jobs you want to get and look for the common languages that they ask for.art


2
Learning the Language

  1. 1
    Think about going to school. While most companies hiring a programmer will care more about your skills than the college you went to or your grades, it greatly helps to have a college degree to point to. You will learn more efficiently than if you teach yourself, all while getting expert guidance from your teachers (and maybe your friends).
    • There are often scholarships and grants available to those doing degrees in this field. Don't feel intimidated by the price tag of a degree: it is possible!


  2. 2
    Learn from online universities. Whether you do an online degree with fees and an actual degree at the end or you're attending a free program like MIT's wonderful Coursera, you can learn a lot about programming from these structured courses.
  3. 3
    Try using online tools. Use free services like Google’s University Consortium or Mozilla’s Developer Network to learn more about programming. These companies want more developers to help their platforms flourish and their resources can be some of the best on the web.
  4. 4
    Learn using online tutorials. There are loads of programmers with websites where they will teach you the individual basics, as well as a few tricks. Look up tutorials on the language you want to learn to find these.
    • Many free online classes are available to learn coding from. The Khan Academy teaches computer coding, with easy tutorials and videos. Code Academy is another free site to learn from, with step-by-step tutorials.
  5. 5
    Start young if you can. There are several programs designed to teach kids to program. Programs like MIT's Scratch are very helpful and the younger you are, the easier it will be to pick up (like any language).
    • Avoid kits, as these rarely teach anything useful.


  1. 1
    Start with a good book or tutorial on programming. Get a good, current book on the programming language you want to learn. Reviews on Amazon or similar sites will usually help you identify helpful books from unhelpful ones.
  2. 2
    Get an interpreter for that language. An interpreter is just another computer program but it will convert ideas you've written in a programming language into "machine code" so you can see things work. Lots of programs are available and you will need to choose one that is appropriate for you.
  3. 3
    Read the book! Take examples of the programming language from the book and put them into your interpreter. Try changing the examples and making the program do different things.
  4. 4
    Try putting together your own ideas to form a working program. Start with simple things, like a program to convert currencies, and work your way up to more complex things as you continue reading and learning about your programming language.
  5. 5
    Learn another language. Once you start actively programming in your first language, you may want to learn a second one. You'll get the most out of learning a second programming language if you pick one that uses a radically different paradigm than the one you started with. For instance, if you started in Scheme, you might try learning C or Java next. If you started in Java, you could learn Perl or Python.
  6. 6
    Continue programming and trying new things! To be a good programmer you, at the very least, have to keep up with changing technology. It's a constant learning process, and you should always be learning new languages, new paradigms, and most importantly: programming new things!



No comments