General Programming Concepts
Summary
These articles introduce you to computers, computer programming, computer networking, and programming for the Web specifically.
Computer Organization and Architecture
- What is in a computer?
- How does a computer work?
- How does a computer run applications?
- Machine code [1]
- 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.