<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Defranks</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Defranks"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Defranks"/>
	<updated>2026-05-20T13:44:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68212</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68212"/>
		<updated>2012-10-26T05:42:33Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Simplicity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref name=&amp;quot;Agile Manifesto&amp;quot;&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
Transparency in an Agile environment extends from simple communication between individuals working on the project to the project's definition and mission statement itself.&amp;lt;ref&amp;gt;The Concept of Transparency in Agile Project Management http://p-a-m.org/2012/03/the-concept-of-transparency-in-agile-project-management/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The high value on ''Transparency'' can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
* ''Individuals and interactions over processes and tools''&lt;br /&gt;
* ''Customer collaboration over contract negotiation''&lt;br /&gt;
&lt;br /&gt;
Transparency in Agile project management is intended to create an open environment where communication and accountability are highly prized.&lt;br /&gt;
Agile does not limit embracing this value simply to interaction between developers and project managers.  As the second bullet point alludes to, this value extends to customer interaction as well.&lt;br /&gt;
The idea is to generate a unifying project goal that the developers, project managers and, customer can all identify with.&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
The Agile Manifesto refers to simplicity as, the art of maximizing the amount of work not done is essential. &amp;lt;ref name=&amp;quot;Agile Manifesto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Simplicity is generally referred to as a little bit less than just enough process.  &lt;br /&gt;
The Agile methodologies attempt to keep the project focused on progressing to the project while eliminating process that can unintentionally slow development.&lt;br /&gt;
This all plays into the Agile Manifesto's statement of &amp;quot;Working software over comprehensive documentation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
There are three aspects or faces to simplicity &amp;lt;ref&amp;gt;Agile Software Development and the Three Faces of Simplicity http://www.informit.com/articles/article.aspx?p=25944&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Do less - This facet refers to doing fewer activities, producing fewer documents and, reducing management reports.&lt;br /&gt;
* Do better - A simple, straight forward model for the project helps the team be sure their design is correct.&lt;br /&gt;
* Do swarms - An appropriate set of simple rules helps a highly motivated group of interactive individuals encourages higher level functions like innovation and creativity.&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
Unity is a pervading ideal through most everything the Agile method is intended to accomplish.  The value placed on unity is reflected in how Agile strives to create a team of customers, developers and project managers that have a single goal of completing a specific project.  In addition it is focused on bringing the product team's understanding, goals and, communication in line with the customer's expectations and goals for the project itself.  By working together while sharing experiences, knowledge and ideas Agile strives to provide a product that accomplishes the goal that the project was intended to accomplish.&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68211</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68211"/>
		<updated>2012-10-26T05:41:17Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Unity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref name=&amp;quot;Agile Manifesto&amp;quot;&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
Transparency in an Agile environment extends from simple communication between individuals working on the project to the project's definition and mission statement itself.&amp;lt;ref&amp;gt;The Concept of Transparency in Agile Project Management http://p-a-m.org/2012/03/the-concept-of-transparency-in-agile-project-management/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The high value on ''Transparency'' can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
* ''Individuals and interactions over processes and tools''&lt;br /&gt;
* ''Customer collaboration over contract negotiation''&lt;br /&gt;
&lt;br /&gt;
Transparency in Agile project management is intended to create an open environment where communication and accountability are highly prized.&lt;br /&gt;
Agile does not limit embracing this value simply to interaction between developers and project managers.  As the second bullet point alludes to, this value extends to customer interaction as well.&lt;br /&gt;
The idea is to generate a unifying project goal that the developers, project managers and, customer can all identify with.&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
The Agile Manifesto refers to simplicity as, the art of maximizing the amount of work not done is essential. &amp;lt;ref name=&amp;quot;Agile Manifesto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Simplicity is generally referred to as a little bit less than just enough process.  &lt;br /&gt;
The Agile methodologies attempt to keep the project focused on progressing to the project while eliminating process that can unintentionally slow development.&lt;br /&gt;
This all plays into the Agile Manifesto's statement of &amp;quot;Working software over comprehensive documentation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
There are three aspects or faces to simplicity &amp;lt;ref&amp;gt;Agile Software Development and the Three Faces of Simplicity http://www.informit.com/articles/article.aspx?p=25944&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Do less&lt;br /&gt;
This facet refers to doing fewer activities, producing fewer documents and, reducing management reports.&lt;br /&gt;
* Do better&lt;br /&gt;
A simple, straight forward model for the project helps the team be sure their design is correct.&lt;br /&gt;
* Do swarms&lt;br /&gt;
An appropriate set of simple rules helps a highly motivated group of interactive individuals encourages higher level functions like innovation and creativity.&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
Unity is a pervading ideal through most everything the Agile method is intended to accomplish.  The value placed on unity is reflected in how Agile strives to create a team of customers, developers and project managers that have a single goal of completing a specific project.  In addition it is focused on bringing the product team's understanding, goals and, communication in line with the customer's expectations and goals for the project itself.  By working together while sharing experiences, knowledge and ideas Agile strives to provide a product that accomplishes the goal that the project was intended to accomplish.&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68210</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68210"/>
		<updated>2012-10-26T05:32:15Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Simplicity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref name=&amp;quot;Agile Manifesto&amp;quot;&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
Transparency in an Agile environment extends from simple communication between individuals working on the project to the project's definition and mission statement itself.&amp;lt;ref&amp;gt;The Concept of Transparency in Agile Project Management http://p-a-m.org/2012/03/the-concept-of-transparency-in-agile-project-management/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The high value on ''Transparency'' can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
* ''Individuals and interactions over processes and tools''&lt;br /&gt;
* ''Customer collaboration over contract negotiation''&lt;br /&gt;
&lt;br /&gt;
Transparency in Agile project management is intended to create an open environment where communication and accountability are highly prized.&lt;br /&gt;
Agile does not limit embracing this value simply to interaction between developers and project managers.  As the second bullet point alludes to, this value extends to customer interaction as well.&lt;br /&gt;
The idea is to generate a unifying project goal that the developers, project managers and, customer can all identify with.&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
The Agile Manifesto refers to simplicity as, the art of maximizing the amount of work not done is essential. &amp;lt;ref name=&amp;quot;Agile Manifesto&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Simplicity is generally referred to as a little bit less than just enough process.  &lt;br /&gt;
The Agile methodologies attempt to keep the project focused on progressing to the project while eliminating process that can unintentionally slow development.&lt;br /&gt;
This all plays into the Agile Manifesto's statement of &amp;quot;Working software over comprehensive documentation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
There are three aspects or faces to simplicity &amp;lt;ref&amp;gt;Agile Software Development and the Three Faces of Simplicity http://www.informit.com/articles/article.aspx?p=25944&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Do less&lt;br /&gt;
This facet refers to doing fewer activities, producing fewer documents and, reducing management reports.&lt;br /&gt;
* Do better&lt;br /&gt;
A simple, straight forward model for the project helps the team be sure their design is correct.&lt;br /&gt;
* Do swarms&lt;br /&gt;
An appropriate set of simple rules helps a highly motivated group of interactive individuals encourages higher level functions like innovation and creativity.&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
The value of unity in Agile methodology is reflected in how Agile strives to create a team of developers and project managers that have a single goal of completing the specific project.&lt;br /&gt;
In addition it is focused on bringing the product team's understanding, goals and, communication in line with the customer's expectations and goals for the project itself.&lt;br /&gt;
By working together while sharing experiences, knowledge and ideas Agile strives to provide a product that accomplishes the goal that the project was intended to accomplish.&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68209</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68209"/>
		<updated>2012-10-26T05:31:56Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* The Agile Manifesto */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref name=&amp;quot;Agile Manifesto&amp;quot;&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
Transparency in an Agile environment extends from simple communication between individuals working on the project to the project's definition and mission statement itself.&amp;lt;ref&amp;gt;The Concept of Transparency in Agile Project Management http://p-a-m.org/2012/03/the-concept-of-transparency-in-agile-project-management/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The high value on ''Transparency'' can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
* ''Individuals and interactions over processes and tools''&lt;br /&gt;
* ''Customer collaboration over contract negotiation''&lt;br /&gt;
&lt;br /&gt;
Transparency in Agile project management is intended to create an open environment where communication and accountability are highly prized.&lt;br /&gt;
Agile does not limit embracing this value simply to interaction between developers and project managers.  As the second bullet point alludes to, this value extends to customer interaction as well.&lt;br /&gt;
The idea is to generate a unifying project goal that the developers, project managers and, customer can all identify with.&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
The Agile Manifesto refers to simplicity as, the art of maximizing the amount of work not done is essential. &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Simplicity is generally referred to as a little bit less than just enough process.  &lt;br /&gt;
The Agile methodologies attempt to keep the project focused on progressing to the project while eliminating process that can unintentionally slow development.&lt;br /&gt;
This all plays into the Agile Manifesto's statement of &amp;quot;Working software over comprehensive documentation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
There are three aspects or faces to simplicity &amp;lt;ref&amp;gt;Agile Software Development and the Three Faces of Simplicity http://www.informit.com/articles/article.aspx?p=25944&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Do less&lt;br /&gt;
This facet refers to doing fewer activities, producing fewer documents and, reduceing management reports.&lt;br /&gt;
* Do better&lt;br /&gt;
A simple, straight forward model for the project helps the team be sure their design is correct.&lt;br /&gt;
* Do swarms&lt;br /&gt;
An appropriate set of simple rules helps a highly motivated group of interactive individuals encourages higher level functions like innovation and creativity.&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
The value of unity in Agile methodology is reflected in how Agile strives to create a team of developers and project managers that have a single goal of completing the specific project.&lt;br /&gt;
In addition it is focused on bringing the product team's understanding, goals and, communication in line with the customer's expectations and goals for the project itself.&lt;br /&gt;
By working together while sharing experiences, knowledge and ideas Agile strives to provide a product that accomplishes the goal that the project was intended to accomplish.&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68208</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68208"/>
		<updated>2012-10-26T05:26:17Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Simplicity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
Transparency in an Agile environment extends from simple communication between individuals working on the project to the project's definition and mission statement itself.&amp;lt;ref&amp;gt;The Concept of Transparency in Agile Project Management http://p-a-m.org/2012/03/the-concept-of-transparency-in-agile-project-management/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The high value on ''Transparency'' can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
* ''Individuals and interactions over processes and tools''&lt;br /&gt;
* ''Customer collaboration over contract negotiation''&lt;br /&gt;
&lt;br /&gt;
Transparency in Agile project management is intended to create an open environment where communication and accountability are highly prized.&lt;br /&gt;
Agile does not limit embracing this value simply to interaction between developers and project managers.  As the second bullet point alludes to, this value extends to customer interaction as well.&lt;br /&gt;
The idea is to generate a unifying project goal that the developers, project managers and, customer can all identify with.&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
The Agile Manifesto refers to simplicity as, the art of maximizing the amount of work not done is essential. &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Simplicity is generally referred to as a little bit less than just enough process.  &lt;br /&gt;
The Agile methodologies attempt to keep the project focused on progressing to the project while eliminating process that can unintentionally slow development.&lt;br /&gt;
This all plays into the Agile Manifesto's statement of &amp;quot;Working software over comprehensive documentation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
There are three aspects or faces to simplicity &amp;lt;ref&amp;gt;Agile Software Development and the Three Faces of Simplicity http://www.informit.com/articles/article.aspx?p=25944&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Do less&lt;br /&gt;
This facet refers to doing fewer activities, producing fewer documents and, reduceing management reports.&lt;br /&gt;
* Do better&lt;br /&gt;
A simple, straight forward model for the project helps the team be sure their design is correct.&lt;br /&gt;
* Do swarms&lt;br /&gt;
An appropriate set of simple rules helps a highly motivated group of interactive individuals encourages higher level functions like innovation and creativity.&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
The value of unity in Agile methodology is reflected in how Agile strives to create a team of developers and project managers that have a single goal of completing the specific project.&lt;br /&gt;
In addition it is focused on bringing the product team's understanding, goals and, communication in line with the customer's expectations and goals for the project itself.&lt;br /&gt;
By working together while sharing experiences, knowledge and ideas Agile strives to provide a product that accomplishes the goal that the project was intended to accomplish.&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68207</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68207"/>
		<updated>2012-10-26T05:25:24Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Simplicity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
Transparency in an Agile environment extends from simple communication between individuals working on the project to the project's definition and mission statement itself.&amp;lt;ref&amp;gt;The Concept of Transparency in Agile Project Management http://p-a-m.org/2012/03/the-concept-of-transparency-in-agile-project-management/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The high value on ''Transparency'' can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
* ''Individuals and interactions over processes and tools''&lt;br /&gt;
* ''Customer collaboration over contract negotiation''&lt;br /&gt;
&lt;br /&gt;
Transparency in Agile project management is intended to create an open environment where communication and accountability are highly prized.&lt;br /&gt;
Agile does not limit embracing this value simply to interaction between developers and project managers.  As the second bullet point alludes to, this value extends to customer interaction as well.&lt;br /&gt;
The idea is to generate a unifying project goal that the developers, project managers and, customer can all identify with.&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
The Agile Manifesto refers to simplicity as, the art of maximizing the amount of work not done is essential. ##Manifesto for Agile Software Development##&lt;br /&gt;
&lt;br /&gt;
Simplicity is generally referred to as a little bit less than just enough process.  &lt;br /&gt;
The Agile methodologies attempt to keep the project focused on progressing to the project while eliminating process that can unintentionally slow development.&lt;br /&gt;
This all plays into the Agile Manifesto's statement of &amp;quot;Working software over comprehensive documentation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
There are three aspects or faces to simplicity &amp;lt;ref&amp;gt;Agile Software Development and the Three Faces of Simplicity http://www.informit.com/articles/article.aspx?p=25944&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Do less&lt;br /&gt;
This facet refers to doing fewer activities, producing fewer documents and, reduceing management reports.&lt;br /&gt;
* Do better&lt;br /&gt;
A simple, straight forward model for the project helps the team be sure their design is correct.&lt;br /&gt;
* Do swarms&lt;br /&gt;
An appropriate set of simple rules helps a highly motivated group of interactive individuals encourages higher level functions like innovation and creativity.&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
The value of unity in Agile methodology is reflected in how Agile strives to create a team of developers and project managers that have a single goal of completing the specific project.&lt;br /&gt;
In addition it is focused on bringing the product team's understanding, goals and, communication in line with the customer's expectations and goals for the project itself.&lt;br /&gt;
By working together while sharing experiences, knowledge and ideas Agile strives to provide a product that accomplishes the goal that the project was intended to accomplish.&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68205</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68205"/>
		<updated>2012-10-26T05:22:40Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Unity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
Transparency in an Agile environment extends from simple communication between individuals working on the project to the project's definition and mission statement itself.&amp;lt;ref&amp;gt;The Concept of Transparency in Agile Project Management http://p-a-m.org/2012/03/the-concept-of-transparency-in-agile-project-management/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The high value on ''Transparency'' can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
* ''Individuals and interactions over processes and tools''&lt;br /&gt;
* ''Customer collaboration over contract negotiation''&lt;br /&gt;
&lt;br /&gt;
Transparency in Agile project management is intended to create an open environment where communication and accountability are highly prized.&lt;br /&gt;
Agile does not limit embracing this value simply to interaction between developers and project managers.  As the second bullet point alludes to, this value extends to customer interaction as well.&lt;br /&gt;
The idea is to generate a unifying project goal that the developers, project managers and, customer can all identify with.&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
The Agile Manifesto refers to simplicity as, the art of maximizing the amount of work not done is essential. [1]&lt;br /&gt;
&lt;br /&gt;
Simplicity is generally referred to as a little bit less than just enough process.  &lt;br /&gt;
The Agile methodologies attempt to keep the project focused on progressing to the project while eliminating process that can unintentionally slow development.&lt;br /&gt;
This all plays into the Agile Manifesto's statement of &amp;quot;Working software over comprehensive documentation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
There are three aspects or faces to simplicity &amp;lt;ref&amp;gt;Agile Software Development and the Three Faces of Simplicity http://www.informit.com/articles/article.aspx?p=25944&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Do less&lt;br /&gt;
This facet refers to doing fewer activities, producing fewer documents and, reduceing management reports.&lt;br /&gt;
* Do better&lt;br /&gt;
A simple, straight forward model for the project helps the team be sure their design is correct.&lt;br /&gt;
* Do swarms&lt;br /&gt;
An appropriate set of simple rules helps a highly motivated group of interactive individuals encourages higher level functions like innovation and creativity.&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
The value of unity in Agile methodology is reflected in how Agile strives to create a team of developers and project managers that have a single goal of completing the specific project.&lt;br /&gt;
In addition it is focused on bringing the product team's understanding, goals and, communication in line with the customer's expectations and goals for the project itself.&lt;br /&gt;
By working together while sharing experiences, knowledge and ideas Agile strives to provide a product that accomplishes the goal that the project was intended to accomplish.&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68204</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68204"/>
		<updated>2012-10-26T05:15:12Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Simplicity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
Transparency in an Agile environment extends from simple communication between individuals working on the project to the project's definition and mission statement itself.&amp;lt;ref&amp;gt;The Concept of Transparency in Agile Project Management http://p-a-m.org/2012/03/the-concept-of-transparency-in-agile-project-management/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The high value on ''Transparency'' can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
* ''Individuals and interactions over processes and tools''&lt;br /&gt;
* ''Customer collaboration over contract negotiation''&lt;br /&gt;
&lt;br /&gt;
Transparency in Agile project management is intended to create an open environment where communication and accountability are highly prized.&lt;br /&gt;
Agile does not limit embracing this value simply to interaction between developers and project managers.  As the second bullet point alludes to, this value extends to customer interaction as well.&lt;br /&gt;
The idea is to generate a unifying project goal that the developers, project managers and, customer can all identify with.&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
The Agile Manifesto refers to simplicity as, the art of maximizing the amount of work not done is essential. [1]&lt;br /&gt;
&lt;br /&gt;
Simplicity is generally referred to as a little bit less than just enough process.  &lt;br /&gt;
The Agile methodologies attempt to keep the project focused on progressing to the project while eliminating process that can unintentionally slow development.&lt;br /&gt;
This all plays into the Agile Manifesto's statement of &amp;quot;Working software over comprehensive documentation&amp;quot;&lt;br /&gt;
&lt;br /&gt;
There are three aspects or faces to simplicity &amp;lt;ref&amp;gt;Agile Software Development and the Three Faces of Simplicity http://www.informit.com/articles/article.aspx?p=25944&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Do less&lt;br /&gt;
This facet refers to doing fewer activities, producing fewer documents and, reduceing management reports.&lt;br /&gt;
* Do better&lt;br /&gt;
A simple, straight forward model for the project helps the team be sure their design is correct.&lt;br /&gt;
* Do swarms&lt;br /&gt;
An appropriate set of simple rules helps a highly motivated group of interactive individuals encourages higher level functions like innovation and creativity.&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
Customer collaboration over contract negotiation&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68203</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68203"/>
		<updated>2012-10-26T04:01:04Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Simplicity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
Transparency in an Agile environment extends from simple communication between individuals working on the project to the project's definition and mission statement itself.&amp;lt;ref&amp;gt;The Concept of Transparency in Agile Project Management http://p-a-m.org/2012/03/the-concept-of-transparency-in-agile-project-management/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The high value on ''Transparency'' can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
* ''Individuals and interactions over processes and tools''&lt;br /&gt;
* ''Customer collaboration over contract negotiation''&lt;br /&gt;
&lt;br /&gt;
Transparency in Agile project management is intended to create an open environment where communication and accountability are highly prized.&lt;br /&gt;
Agile does not limit embracing this value simply to interaction between developers and project managers.  As the second bullet point alludes to, this value extends to customer interaction as well.&lt;br /&gt;
The idea is to generate a unifying project goal that the developers, project managers and, customer can all identify with.&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
The Agile Manifesto refers to simplicity as, the art of maximizing the amount of work not done is essential. &amp;lt;ref=1&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Working software over comprehensive documentation&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
Customer collaboration over contract negotiation&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68202</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68202"/>
		<updated>2012-10-26T03:59:31Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Simplicity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
Transparency in an Agile environment extends from simple communication between individuals working on the project to the project's definition and mission statement itself.&amp;lt;ref&amp;gt;The Concept of Transparency in Agile Project Management http://p-a-m.org/2012/03/the-concept-of-transparency-in-agile-project-management/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The high value on ''Transparency'' can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
* ''Individuals and interactions over processes and tools''&lt;br /&gt;
* ''Customer collaboration over contract negotiation''&lt;br /&gt;
&lt;br /&gt;
Transparency in Agile project management is intended to create an open environment where communication and accountability are highly prized.&lt;br /&gt;
Agile does not limit embracing this value simply to interaction between developers and project managers.  As the second bullet point alludes to, this value extends to customer interaction as well.&lt;br /&gt;
The idea is to generate a unifying project goal that the developers, project managers and, customer can all identify with.&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
The Agile Manifesto refers to simplicity as, the art of maximizing the amount of work not done is essential. &amp;lt;ref&amp;gt;1&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Working software over comprehensive documentation&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
Customer collaboration over contract negotiation&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68201</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68201"/>
		<updated>2012-10-26T03:50:09Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Transparency */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
Transparency in an Agile environment extends from simple communication between individuals working on the project to the project's definition and mission statement itself.&amp;lt;ref&amp;gt;The Concept of Transparency in Agile Project Management http://p-a-m.org/2012/03/the-concept-of-transparency-in-agile-project-management/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The high value on ''Transparency'' can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
* ''Individuals and interactions over processes and tools''&lt;br /&gt;
* ''Customer collaboration over contract negotiation''&lt;br /&gt;
&lt;br /&gt;
Transparency in Agile project management is intended to create an open environment where communication and accountability are highly prized.&lt;br /&gt;
Agile does not limit embracing this value simply to interaction between developers and project managers.  As the second bullet point alludes to, this value extends to customer interaction as well.&lt;br /&gt;
The idea is to generate a unifying project goal that the developers, project managers and, customer can all identify with.&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
Working software over comprehensive documentation&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
Customer collaboration over contract negotiation&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68200</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68200"/>
		<updated>2012-10-26T03:19:37Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Transparency */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
Transparency in an Agile environment extends from simple communication between individuals working on the project to the project's definition and mission statement itself.&lt;br /&gt;
&lt;br /&gt;
The high value on ''Transparency'' can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
* ''Individuals and interactions over processes and tools''&lt;br /&gt;
* ''Customer collaboration over contract negotiation''&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
Working software over comprehensive documentation&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
Customer collaboration over contract negotiation&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68199</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68199"/>
		<updated>2012-10-26T03:17:18Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Transparency */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
Transparency in an Agile environment extends from simple communication between individuals working on the project to the project's definition and mission statement itself.&lt;br /&gt;
&lt;br /&gt;
The two statements below from the manifesto speak directly to this value.&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
Working software over comprehensive documentation&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
Customer collaboration over contract negotiation&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68198</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68198"/>
		<updated>2012-10-26T03:15:27Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Transparency */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
Transparency in an Agile environment extends from simple communication between individuals working on the project to the project's definition and mission statement itself.&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
Working software over comprehensive documentation&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
Customer collaboration over contract negotiation&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68028</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68028"/>
		<updated>2012-10-23T18:27:28Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Transparency */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
Individuals and interactions over processes and tools&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
Working software over comprehensive documentation&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
Customer collaboration over contract negotiation&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68027</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68027"/>
		<updated>2012-10-23T18:27:16Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Unity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
Working software over comprehensive documentation&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
Customer collaboration over contract negotiation&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68026</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68026"/>
		<updated>2012-10-23T18:27:00Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Transparency */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
Working software over comprehensive documentation&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
Individuals and interactions over processes and tools&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68024</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68024"/>
		<updated>2012-10-23T18:17:42Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Unity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
Customer collaboration over contract negotiation&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
Working software over comprehensive documentation&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
Individuals and interactions over processes and tools&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68023</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68023"/>
		<updated>2012-10-23T18:17:20Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Simplicity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
Customer collaboration over contract negotiation&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
Working software over comprehensive documentation&lt;br /&gt;
&lt;br /&gt;
==== Unity ====&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68019</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=68019"/>
		<updated>2012-10-23T18:12:57Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Transparency */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
Customer collaboration over contract negotiation&lt;br /&gt;
&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
==== Unity ====&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=67921</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=67921"/>
		<updated>2012-10-23T03:57:40Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Scrum */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
==== Unity ====&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&amp;lt;ref&amp;gt;Scrum - Wikipedia http://en.wikipedia.org/wiki/Scrum_(development)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=67918</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=67918"/>
		<updated>2012-10-23T03:56:17Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Scrum */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
==== Unity ====&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=67917</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=67917"/>
		<updated>2012-10-23T03:56:00Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Scrum */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
==== Unity ====&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. &lt;br /&gt;
&lt;br /&gt;
Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&lt;br /&gt;
&lt;br /&gt;
The fundamental process is defined by the three following roles&lt;br /&gt;
* Product Owners responsible for deciding on what will be built in the upcoming time frame&lt;br /&gt;
* Development Teams - responsible for building the product defined by the Product Owners in the allotted time frame.  This is followed by a demonstration to the Product Owners.&lt;br /&gt;
* Scrum Masters - responsible for smoothing out and improving the process.&lt;br /&gt;
&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=67910</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=67910"/>
		<updated>2012-10-23T03:28:49Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Scrum */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
==== Unity ====&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&lt;br /&gt;
&amp;lt;ref&amp;gt;Scrum.org http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=67909</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=67909"/>
		<updated>2012-10-23T03:27:49Z</updated>

		<summary type="html">&lt;p&gt;Defranks: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
==== Unity ====&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&lt;br /&gt;
http://www.scrum.org/Resources/What-is-Scrum&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=67906</id>
		<title>CSC/ECE 517 Fall 2012/ch2a 2w5 dp</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch2a_2w5_dp&amp;diff=67906"/>
		<updated>2012-10-23T03:20:25Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Scrum */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agile Software Development ==&lt;br /&gt;
=== Why Agile? ===&lt;br /&gt;
James Shore and Shane Warden &amp;lt;ref&amp;gt;Shore, James and Warden, Shane. ''The Art of Agile Development''. O’Reilly Media, Inc., 2008, p. 4.&amp;lt;/ref&amp;gt; state that the benefit for developers to follow a Agile software development process is to deliver successful products to the client or customer.&lt;br /&gt;
He defines success into 3 types:&lt;br /&gt;
# Organizational&lt;br /&gt;
#* Deliver value and decrease costs to increase return on investment.&lt;br /&gt;
# Technical&lt;br /&gt;
#* Elegant and maintainable code is produced.&lt;br /&gt;
# Personal&lt;br /&gt;
#* Developers find the project fun and rewarding which lead them to be intrinsically motivated and devote passion to the work.&lt;br /&gt;
&lt;br /&gt;
=== The Agile Manifesto ===&lt;br /&gt;
The Agile Manifesto is a set of [http://agilemanifesto.org/principles.html 12 principles] that provide a foundation for agile methodologies.&lt;br /&gt;
&lt;br /&gt;
The core principles of the manifesto are as follows &amp;lt;ref&amp;gt;Manifesto for Agile Software Development http://agilemanifesto.org/ &amp;lt;/ref&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
* Individuals and interactions over processes and tools&lt;br /&gt;
* Working software over comprehensive documentation &lt;br /&gt;
* Customer collaboration over contract negotiation&lt;br /&gt;
* Responding to change over following a plan&lt;br /&gt;
&lt;br /&gt;
=== Values ===&lt;br /&gt;
There are four concepts that represent the main values of Agile software development.&lt;br /&gt;
#Adaptability&lt;br /&gt;
#Transparency&lt;br /&gt;
#Simplicity&lt;br /&gt;
#Unity&lt;br /&gt;
&lt;br /&gt;
[[File:Agile_poster.png]]&lt;br /&gt;
==== Adaptability ====&lt;br /&gt;
Adaptability is purported to be the most important value &amp;lt;ref&amp;gt;The Agile Leader: Adaptability&lt;br /&gt;
 http://blogs.forrester.com/tom_grant/11-04-19-adaptability_may_turn_out_to_be_agiles_most_important_virtue&amp;lt;/ref&amp;gt; of Agile methodologies.&lt;br /&gt;
&lt;br /&gt;
This value forces teams to plan for inevitable change in a mindful manner.&lt;br /&gt;
&lt;br /&gt;
The focus for Adaptability can be summarized by these two principles stated in the Agile manifesto.&lt;br /&gt;
*''&amp;quot;Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.&amp;quot;''&lt;br /&gt;
*''&amp;quot;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
There are three components in Adaptability &amp;lt;ref&amp;gt;Adaptation in project management through agile http://searchsoftwarequality.techtarget.com/feature/Adaptation-in-project-management-through-agile&amp;lt;/ref&amp;gt; These three components must ALL be open to change in order to have a fully adaptable agile environment.&lt;br /&gt;
#Product - quality code and adequate testing will ensure product functionality after changes have been made.&lt;br /&gt;
#Process - practices that allow the team to adapt must be in place.&lt;br /&gt;
#People - developers, management, and stakeholders must have the proper attitude that is accepting of change and want to work in a collaborative way. If people don't collaborate, the full advantages of an adaptive process are lost.&lt;br /&gt;
==== Transparency ====&lt;br /&gt;
==== Simplicity ====&lt;br /&gt;
==== Unity ====&lt;br /&gt;
&lt;br /&gt;
=== Best Practices ===&lt;br /&gt;
These are some of today's most common Agile practices &amp;lt;ref&amp;gt;Professional Management: Top ten agile best practices http://profmgmt.wordpress.com/2007/01/11/top-ten-agile-best-practices/&amp;lt;/ref&amp;gt;. Before adopting a practice, teams must be able understand their priorities and problems affecting the product before you can decide which practices will be the solutions to those problems &amp;lt;ref&amp;gt;Professional Management: Which best practice to implement first? http://profmgmt.wordpress.com/2007/01/11/which-best-practice-to-implement-first/&amp;lt;/ref&amp;gt;. &lt;br /&gt;
*Common coding guidelines&lt;br /&gt;
*Refactoring&lt;br /&gt;
*Regression testing&lt;br /&gt;
*Continuous integration&lt;br /&gt;
*Test driven development&lt;br /&gt;
*Active stakeholder participation&lt;br /&gt;
*Pair programming&lt;br /&gt;
&lt;br /&gt;
=== Popular Agile Methods ===&lt;br /&gt;
Martin Fowler refers to Agile Software Development as a philosophy from which several different types of methodologies inherit their characteristics. Thus, it should be considered as an umbrella for the agile methods organizations choose to implement in their software projects &amp;lt;ref&amp;gt;Flavors of Agile Development http://martinfowler.com/articles/newMethodology.html#FlavorsOfAgileDevelopment&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The following are some of the most common Agile Methods practiced by industry organizations.&lt;br /&gt;
==== Extreme Programming (XP) ====&lt;br /&gt;
Extreme Programming (XP) is one of the most practiced and well-known Agile methods and it is characterized by four core values &amp;lt;ref&amp;gt;A Practical Guide to Seven Agile Methodologies, Part 1 http://www.devx.com/architect/Article/32761/0&amp;lt;/ref&amp;gt;: &lt;br /&gt;
*Communication &lt;br /&gt;
*Simplicity &lt;br /&gt;
*Feedback &lt;br /&gt;
*Courage&lt;br /&gt;
&lt;br /&gt;
XP's emphasis is on technical practices to ensure frequent delivery of functional software through skillful development.&lt;br /&gt;
The practice of constant code reviews plays a big part in XP to ensure that development is skillful and code is fully functioning. This requires a high level of teamwork from team members and, therefore, a large fous on pair programming and refactoring must be in place. All three components allow teams to develop designs that increase business value in a simple and effective manner. &lt;br /&gt;
XP is characterized by short iterations that last anywhere between one and four weeks.&lt;br /&gt;
&lt;br /&gt;
==== Scrum ====&lt;br /&gt;
Scrum is an agile method for product development that focuses on individuals and teams. Project development generally occurs in small iterative pieces.  The intention is to encourage creativity while providing built in design time for feedback analysis.  Scrum provides a simple framework to guide developers and managers during product development.  The goal of the simple framework is to provide just enough structure for empirical process control based off of feedback loops.&lt;br /&gt;
&lt;br /&gt;
==== Crystal ====&lt;br /&gt;
==== Context Driven Testing ====&lt;br /&gt;
==== Lean Development ====&lt;br /&gt;
==== Unified Proccess ====&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66340</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66340"/>
		<updated>2012-10-03T05:11:01Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.  Some of the examples used below are taken directly from the lecture slides present in the coursera video for consistency.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.  Global variables in Ruby are always defined with a leading dollar symbol ($).  One item the video does not go over but will be helpful to Ruby programmers is that single line comments in ruby begin with the hash (#) character.  Ruby also has multiline comments like other languages which are denoted with the tokens =begin and =end.  Please see the [[#References|references]]section for more information on comments in Ruby.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example from the references links below written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comments in Ruby are&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
In Ruby local variables do not have a value until they are explicitly given one.  This means that all local variables, this includes instance and class variables, must be assigned before use otherwise they are have the value of nil.  The keyword nil in Ruby is exactly the same as null in other languages.  Variable definitions are not valid in Ruby, you will never see a class name prior to a variable.  Constant variables are always scoped to where they are defined (local or class) however, Global variables are accessible anywhere and at any time.  In Ruby just like other languages you want to avoid the use of global variables if at all possible.  &lt;br /&gt;
&lt;br /&gt;
When working with variables in Ruby it is important to remember that in Ruby objects have types but the variables that you use do not.  This can be a bit difficult to wrap your head around but, it is a fundamental aspect of how Ruby works.  You can think of the variable you created as an untyped container and that while you can put any specific object into that container it does not make the container into that object.&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java.  A string can be defined in a number of ways.  You can leverage the single quote characters which will define that there are just characters in the string but, you can also combine the use of double quotes with the hash brace characters to include evaluated statements into your string.  Ruby also of course includes a way to escape the double and single quote characters with the %Q{} and %q{} syntax respectively.&lt;br /&gt;
&lt;br /&gt;
Ruby also includes a special type of string called a symbol.  Symbols are essentially [en.wikipedia.org/wiki/Immutable_object immutable] strings and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
'''Variable Examples'''&amp;lt;br&amp;gt;&lt;br /&gt;
Valid variable declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = 3&lt;br /&gt;
 x = 'foo'&lt;br /&gt;
 x = [1, 'two', :three]  #The three lines above are all valid because the variable x does not have a type&lt;br /&gt;
 DEBUG_MODE = true&lt;br /&gt;
 $DEBUG_MODE = true   #Global variable - make every effort not to use this&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Invalid declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Integer x&lt;br /&gt;
 Integer x = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = 'Hello World'           # Value: Hello World&lt;br /&gt;
 a = 1                              # Integer value used in the next line's example&lt;br /&gt;
 mystring = &amp;quot;Hello World #{a+1}&amp;quot;    # Value: Hello World 2&lt;br /&gt;
 mystring = %Q{&amp;quot;Hello World&amp;quot;}       # Value: &amp;quot;Hello World&amp;quot;&lt;br /&gt;
 mystring = %q{'Hello World'}       # Value: 'Hello World'&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example of a Symbol&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = :hello&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String and symbol interaction examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 :hello.to_s == &amp;quot;hello&amp;quot;&lt;br /&gt;
 &amp;quot;hello&amp;quot;.to_sym == :hello&lt;br /&gt;
 :hello == &amp;quot;hello&amp;quot; #Always evaluates to false&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Arrays are fairly similar to most other languages in that you have access to the usual properties although in Ruby they're actually method calls.  A Ruby array can have any number of different types included in them.  This is drastically different from other languages where you have to declare the type of objects that are stored in the array.  Ruby also implements hashes and much like their array counterparts, have all of the normal hash methods defined but again do not have to have consistent types across keys and values.  In practice, you generally try to keep the types consistent across the elements of your array or hash but, this is a convention and is not required by the compiler.  In some programming cases, you will not be able to do this.&lt;br /&gt;
&lt;br /&gt;
'''Array Examples'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = [1, 'two', :three]&lt;br /&gt;
 x[1] == 'two'&lt;br /&gt;
 x.length == 3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Hash Examples'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 w = {'a' =&amp;gt; 1, :b =&amp;gt; [2, 3]}&lt;br /&gt;
 w[:b][0] == 2&lt;br /&gt;
 w.keys == ['a', :b]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
In Ruby, everything in method calls is passed by reference except for [http://www.ruby-doc.org/core-1.9.3/Fixnum.html fixnums].  The last statement in a method call is returned at the end of the method call.  This touches on the syntactic sugar that we mentioned before, it is not necessary to specify the keyword return although it may be helpful to do so in a more complex application.  You can specify default values for your input parameters however, they must come after the variable input parameters otherwise the Ruby interpreter will not be able to properly parse the method definition.  It is also possible to create a method on a single line if the method is short enough, you simply need to end each statement with a semicolon however, it is rare to see this in actual use.&lt;br /&gt;
&lt;br /&gt;
'''Method examples'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 def foo(x,y)&lt;br /&gt;
    return [x, y+1]&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 def foo(x, y=0)&lt;br /&gt;
    [x, y+1]&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results of calling the above methods&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 a,b = foo(x,y)  #a is assigned the value of x and b is assigned the value of y+1&lt;br /&gt;
 a,b = foo(x)    #a is assigned the value of x and b is assigned the value of 0+1 or 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
Ruby provides all of the normal comparison operators for use.  This also includes the '=~' and '!~' operators that are used with regular expressions in Ruby.  Ruby defines true, false and, nil as constants.  False or nil are the only things in Ruby that evaluate to false everything else evaluates to true.  This is different from other languages where the empty string or the value 0 will evaluate to false as well.&lt;br /&gt;
&lt;br /&gt;
Ruby fully supports regular expressions the syntax used is borrowed from Perl, Python and, other languages.  The =~ will compare to a regular expression and !~ will define a not equal.  Please see the references section to find more information on Ruby regular expressions and a useful site that can help you generate your regular expressions in Ruby that is mentioned in the video.  When working with regular expressions in Ruby, you're generally comparing to a string.  There are various ways to represent a string in Ruby.  Please refer to the variables section for more information on strings.  A regular expression in Ruby will return false if there are no matches and will return a set of objects if true.  The set of objects that is returned is from $1..$n parenthesized groups which are all of the groups that matched on the expression.&lt;br /&gt;
&lt;br /&gt;
'''Regular expression example'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;quot;fox@berkeley.edu&amp;quot; =~ /(.*)@(.*)\.edu$/i  #This code will capture ($1 == 'fox', $2 =='berkeley')&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://ruby.about.com/od/rubyfeatures/a/comment.htm Comments in Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://rubular.com Rubular] - This is a website that helps you generate regular expressions in Ruby&lt;br /&gt;
&lt;br /&gt;
[http://www.ruby-doc.org/core/Regexp.html Ruby API documentation on regular expressions]&lt;br /&gt;
&lt;br /&gt;
[http://rubylearning.com/satishtalim/ruby_regular_expressions.html Ruby regular expression tutorial]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66338</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66338"/>
		<updated>2012-10-03T05:10:20Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.  Global variables in Ruby are always defined with a leading dollar symbol ($).  One item the video does not go over but will be helpful to Ruby programmers is that single line comments in ruby begin with the hash (#) character.  Ruby also has multiline comments like other languages which are denoted with the tokens =begin and =end.  Please see the [[#References|references]]section for more information on comments in Ruby.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example from the references links below written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comments in Ruby are&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
In Ruby local variables do not have a value until they are explicitly given one.  This means that all local variables, this includes instance and class variables, must be assigned before use otherwise they are have the value of nil.  The keyword nil in Ruby is exactly the same as null in other languages.  Variable definitions are not valid in Ruby, you will never see a class name prior to a variable.  Constant variables are always scoped to where they are defined (local or class) however, Global variables are accessible anywhere and at any time.  In Ruby just like other languages you want to avoid the use of global variables if at all possible.  &lt;br /&gt;
&lt;br /&gt;
When working with variables in Ruby it is important to remember that in Ruby objects have types but the variables that you use do not.  This can be a bit difficult to wrap your head around but, it is a fundamental aspect of how Ruby works.  You can think of the variable you created as an untyped container and that while you can put any specific object into that container it does not make the container into that object.&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java.  A string can be defined in a number of ways.  You can leverage the single quote characters which will define that there are just characters in the string but, you can also combine the use of double quotes with the hash brace characters to include evaluated statements into your string.  Ruby also of course includes a way to escape the double and single quote characters with the %Q{} and %q{} syntax respectively.&lt;br /&gt;
&lt;br /&gt;
Ruby also includes a special type of string called a symbol.  Symbols are essentially [en.wikipedia.org/wiki/Immutable_object immutable] strings and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
'''Variable Examples'''&amp;lt;br&amp;gt;&lt;br /&gt;
Valid variable declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = 3&lt;br /&gt;
 x = 'foo'&lt;br /&gt;
 x = [1, 'two', :three]  #The three lines above are all valid because the variable x does not have a type&lt;br /&gt;
 DEBUG_MODE = true&lt;br /&gt;
 $DEBUG_MODE = true   #Global variable - make every effort not to use this&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Invalid declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Integer x&lt;br /&gt;
 Integer x = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = 'Hello World'           # Value: Hello World&lt;br /&gt;
 a = 1                              # Integer value used in the next line's example&lt;br /&gt;
 mystring = &amp;quot;Hello World #{a+1}&amp;quot;    # Value: Hello World 2&lt;br /&gt;
 mystring = %Q{&amp;quot;Hello World&amp;quot;}       # Value: &amp;quot;Hello World&amp;quot;&lt;br /&gt;
 mystring = %q{'Hello World'}       # Value: 'Hello World'&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example of a Symbol&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = :hello&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String and symbol interaction examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 :hello.to_s == &amp;quot;hello&amp;quot;&lt;br /&gt;
 &amp;quot;hello&amp;quot;.to_sym == :hello&lt;br /&gt;
 :hello == &amp;quot;hello&amp;quot; #Always evaluates to false&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Arrays are fairly similar to most other languages in that you have access to the usual properties although in Ruby they're actually method calls.  A Ruby array can have any number of different types included in them.  This is drastically different from other languages where you have to declare the type of objects that are stored in the array.  Ruby also implements hashes and much like their array counterparts, have all of the normal hash methods defined but again do not have to have consistent types across keys and values.  In practice, you generally try to keep the types consistent across the elements of your array or hash but, this is a convention and is not required by the compiler.  In some programming cases, you will not be able to do this.&lt;br /&gt;
&lt;br /&gt;
'''Array Examples'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = [1, 'two', :three]&lt;br /&gt;
 x[1] == 'two'&lt;br /&gt;
 x.length == 3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Hash Examples'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 w = {'a' =&amp;gt; 1, :b =&amp;gt; [2, 3]}&lt;br /&gt;
 w[:b][0] == 2&lt;br /&gt;
 w.keys == ['a', :b]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
In Ruby, everything in method calls is passed by reference except for [http://www.ruby-doc.org/core-1.9.3/Fixnum.html fixnums].  The last statement in a method call is returned at the end of the method call.  This touches on the syntactic sugar that we mentioned before, it is not necessary to specify the keyword return although it may be helpful to do so in a more complex application.  You can specify default values for your input parameters however, they must come after the variable input parameters otherwise the Ruby interpreter will not be able to properly parse the method definition.  It is also possible to create a method on a single line if the method is short enough, you simply need to end each statement with a semicolon however, it is rare to see this in actual use.&lt;br /&gt;
&lt;br /&gt;
'''Method examples'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 def foo(x,y)&lt;br /&gt;
    return [x, y+1]&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 def foo(x, y=0)&lt;br /&gt;
    [x, y+1]&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results of calling the above methods&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 a,b = foo(x,y)  #a is assigned the value of x and b is assigned the value of y+1&lt;br /&gt;
 a,b = foo(x)    #a is assigned the value of x and b is assigned the value of 0+1 or 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
Ruby provides all of the normal comparison operators for use.  This also includes the '=~' and '!~' operators that are used with regular expressions in Ruby.  Ruby defines true, false and, nil as constants.  False or nil are the only things in Ruby that evaluate to false everything else evaluates to true.  This is different from other languages where the empty string or the value 0 will evaluate to false as well.&lt;br /&gt;
&lt;br /&gt;
Ruby fully supports regular expressions the syntax used is borrowed from Perl, Python and, other languages.  The =~ will compare to a regular expression and !~ will define a not equal.  Please see the references section to find more information on Ruby regular expressions and a useful site that can help you generate your regular expressions in Ruby that is mentioned in the video.  When working with regular expressions in Ruby, you're generally comparing to a string.  There are various ways to represent a string in Ruby.  Please refer to the variables section for more information on strings.  A regular expression in Ruby will return false if there are no matches and will return a set of objects if true.  The set of objects that is returned is from $1..$n parenthesized groups which are all of the groups that matched on the expression.&lt;br /&gt;
&lt;br /&gt;
'''Regular expression example'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;quot;fox@berkeley.edu&amp;quot; =~ /(.*)@(.*)\.edu$/i  #This code will capture ($1 == 'fox', $2 =='berkeley')&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://ruby.about.com/od/rubyfeatures/a/comment.htm Comments in Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://rubular.com Rubular] - This is a website that helps you generate regular expressions in Ruby&lt;br /&gt;
&lt;br /&gt;
[http://www.ruby-doc.org/core/Regexp.html Ruby API documentation on regular expressions]&lt;br /&gt;
&lt;br /&gt;
[http://rubylearning.com/satishtalim/ruby_regular_expressions.html Ruby regular expression tutorial]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66336</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66336"/>
		<updated>2012-10-03T05:08:30Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Variables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.  Global variables in Ruby are always defined with a leading dollar symbol ($).  One item the video does not go over but will be helpful to Ruby programmers is that single line comments in ruby begin with the hash (#) character.  Ruby also has multiline comments like other languages which are denoted with the tokens =begin and =end.  Please see the [[#References|references]]section for more information on comments in Ruby.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example from the references links below written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comments in Ruby are&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
In Ruby local variables do not have a value until they are explicitly given one.  This means that all local variables, this includes instance and class variables, must be assigned before use otherwise they are have the value of nil.  The keyword nil in Ruby is exactly the same as null in other languages.  Variable definitions are not valid in Ruby, you will never see a class name prior to a variable.  Constant variables are always scoped to where they are defined (local or class) however, Global variables are accessible anywhere and at any time.  In Ruby just like other languages you want to avoid the use of global variables if at all possible.  &lt;br /&gt;
&lt;br /&gt;
When working with variables in Ruby it is important to remember that in Ruby objects have types but the variables that you use do not.  This can be a bit difficult to wrap your head around but, it is a fundamental aspect of how Ruby works.  You can think of the variable you created as an untyped container and that while you can put any specific object into that container it does not make the container into that object.&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java.  A string can be defined in a number of ways.  You can leverage the single quote characters which will define that there are just characters in the string but, you can also combine the use of double quotes with the hash brace characters to include evaluated statements into your string.  Ruby also of course includes a way to escape the double and single quote characters with the %Q{} and %q{} syntax respectively.&lt;br /&gt;
&lt;br /&gt;
Ruby also includes a special type of string called a symbol.  Symbols are essentially [en.wikipedia.org/wiki/Immutable_object immutable] strings and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
'''Variable Examples'''&amp;lt;br&amp;gt;&lt;br /&gt;
Valid variable declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = 3&lt;br /&gt;
 x = 'foo'&lt;br /&gt;
 x = [1, 'two', :three]  #The three lines above are all valid because the variable x does not have a type&lt;br /&gt;
 DEBUG_MODE = true&lt;br /&gt;
 $DEBUG_MODE = true   #Global variable - make every effort not to use this&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Invalid declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Integer x&lt;br /&gt;
 Integer x = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = 'Hello World'           # Value: Hello World&lt;br /&gt;
 a = 1                              # Integer value used in the next line's example&lt;br /&gt;
 mystring = &amp;quot;Hello World #{a+1}&amp;quot;    # Value: Hello World 2&lt;br /&gt;
 mystring = %Q{&amp;quot;Hello World&amp;quot;}       # Value: &amp;quot;Hello World&amp;quot;&lt;br /&gt;
 mystring = %q{'Hello World'}       # Value: 'Hello World'&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example of a Symbol&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = :hello&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String and symbol interaction examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 :hello.to_s == &amp;quot;hello&amp;quot;&lt;br /&gt;
 &amp;quot;hello&amp;quot;.to_sym == :hello&lt;br /&gt;
 :hello == &amp;quot;hello&amp;quot; #Always evaluates to false&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Arrays are fairly similar to most other languages in that you have access to the usual properties although in Ruby they're actually method calls.  A Ruby array can have any number of different types included in them.  This is drastically different from other languages where you have to declare the type of objects that are stored in the array.  Ruby also implements hashes and much like their array counterparts, have all of the normal hash methods defined but again do not have to have consistent types across keys and values.  In practice, you generally try to keep the types consistent across the elements of your array or hash but, this is a convention and is not required by the compiler.  In some programming cases, you will not be able to do this.&lt;br /&gt;
&lt;br /&gt;
'''Array Examples'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = [1, 'two', :three]&lt;br /&gt;
 x[1] == 'two'&lt;br /&gt;
 x.length == 3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Hash Examples'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 w = {'a' =&amp;gt; 1, :b =&amp;gt; [2, 3]}&lt;br /&gt;
 w[:b][0] == 2&lt;br /&gt;
 w.keys == ['a', :b]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
In Ruby, everything in method calls is passed by reference except for [http://www.ruby-doc.org/core-1.9.3/Fixnum.html fixnums].  The last statement in a method call is returned at the end of the method call.  This touches on the syntactic sugar that we mentioned before, it is not necessary to specify the keyword return although it may be helpful to do so in a more complex application.  You can specify default values for your input parameters however, they must come after the variable input parameters otherwise the Ruby interpreter will not be able to properly parse the method definition.  It is also possible to create a method on a single line if the method is short enough, you simply need to end each statement with a semicolon however, it is rare to see this in actual use.&lt;br /&gt;
&lt;br /&gt;
'''Method examples'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 def foo(x,y)&lt;br /&gt;
    return [x, y+1]&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 def foo(x, y=0)&lt;br /&gt;
    [x, y+1]&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results of calling the above methods&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 a,b = foo(x,y)  #a is assigned the value of x and b is assigned the value of y+1&lt;br /&gt;
 a,b = foo(x)    #a is assigned the value of x and b is assigned the value of 0+1 or 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
Ruby provides all of the normal comparison operators for use.  This also includes the '=~' and '!~' operators that are used with regular expressions in Ruby.  Ruby defines true, false and, nil as constants.  False or nil are the only things in Ruby that evaluate to false everything else evaluates to true.  This is different from other languages where the empty string or the value 0 will evaluate to false as well.&lt;br /&gt;
&lt;br /&gt;
Ruby fully supports regular expressions the syntax used is borrowed from Perl, Python and, other languages.  The =~ will compare to a regular expression and !~ will define a not equal.  Please see the references section to find more information on Ruby regular expressions and a useful site that can help you generate your regular expressions in Ruby that is mentioned in the video.  When working with regular expressions in Ruby, you're generally comparing to a string.  There are various ways to represent a string in Ruby.  Please refer to the variables section for more information on strings.  A regular expression in Ruby will return false if there are no matches and will return a set of objects if true.  The set of objects that is returned is from $1..$n parenthesized groups which are all of the groups that matched on the expression.&lt;br /&gt;
&lt;br /&gt;
'''Regular expression example'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;quot;fox@berkeley.edu&amp;quot; =~ /(.*)@(.*)\.edu$/i  #This code will capture ($1 == 'fox', $2 =='berkeley')&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://ruby.about.com/od/rubyfeatures/a/comment.htm Comments in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66333</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66333"/>
		<updated>2012-10-03T05:03:09Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Comparisons and regular expressions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.  Global variables in Ruby are always defined with a leading dollar symbol ($).  One item the video does not go over but will be helpful to Ruby programmers is that single line comments in ruby begin with the hash (#) character.  Ruby also has multiline comments like other languages which are denoted with the tokens =begin and =end.  Please see the [[#References|references]]section for more information on comments in Ruby.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example from the references links below written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comments in Ruby are&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
In Ruby local variables do not have a value until they are explicitly given one.  This means that all local variables, this includes instance and class variables, must be assigned before use otherwise they are have the value of nil.  The keyword nil in Ruby is exactly the same as null in other languages.  Variable definitions are not valid in Ruby, you will never see a class name prior to a variable.  Constant variables are always scoped to where they are defined (local or class) however, Global variables are accessible anywhere and at any time.  In Ruby just like other languages you want to avoid the use of global variables if at all possible.  &lt;br /&gt;
&lt;br /&gt;
When working with variables in Ruby it is important to remember that in Ruby objects have types but the variables that you use do not.  This can be a bit difficult to wrap your head around but, it is a fundamental aspect of how Ruby works.  You can think of the variable you created as an untyped container and that while you can put any specific object into that container it does not make the container into that object.&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java however, Ruby also includes a special type of string called a symbol.  Symbols are essentially [en.wikipedia.org/wiki/Immutable_object immutable] strings and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
'''Variable Examples'''&amp;lt;br&amp;gt;&lt;br /&gt;
Valid variable declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = 3&lt;br /&gt;
 x = 'foo'&lt;br /&gt;
 x = [1, 'two', :three]  #The three lines above are all valid because the variable x does not have a type&lt;br /&gt;
 DEBUG_MODE = true&lt;br /&gt;
 $DEBUG_MODE = true   #Global variable - make every effort not to use this&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Invalid declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Integer x&lt;br /&gt;
 Integer x = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = 'Hello World'&lt;br /&gt;
 mystring = &amp;quot;Hello World #&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example of a Symbol&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = :hello&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String and symbol interaction examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 :hello.to_s == &amp;quot;hello&amp;quot;&lt;br /&gt;
 &amp;quot;hello&amp;quot;.to_sym == :hello&lt;br /&gt;
 :hello == &amp;quot;hello&amp;quot; #Always evaluates to false&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Arrays are fairly similar to most other languages in that you have access to the usual properties although in Ruby they're actually method calls.  A Ruby array can have any number of different types included in them.  This is drastically different from other languages where you have to declare the type of objects that are stored in the array.  Ruby also implements hashes and much like their array counterparts, have all of the normal hash methods defined but again do not have to have consistent types across keys and values.  In practice, you generally try to keep the types consistent across the elements of your array or hash but, this is a convention and is not required by the compiler.  In some programming cases, you will not be able to do this.&lt;br /&gt;
&lt;br /&gt;
'''Array Examples'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = [1, 'two', :three]&lt;br /&gt;
 x[1] == 'two'&lt;br /&gt;
 x.length == 3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Hash Examples'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 w = {'a' =&amp;gt; 1, :b =&amp;gt; [2, 3]}&lt;br /&gt;
 w[:b][0] == 2&lt;br /&gt;
 w.keys == ['a', :b]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
In Ruby, everything in method calls is passed by reference except for [http://www.ruby-doc.org/core-1.9.3/Fixnum.html fixnums].  The last statement in a method call is returned at the end of the method call.  This touches on the syntactic sugar that we mentioned before, it is not necessary to specify the keyword return although it may be helpful to do so in a more complex application.  You can specify default values for your input parameters however, they must come after the variable input parameters otherwise the Ruby interpreter will not be able to properly parse the method definition.  It is also possible to create a method on a single line if the method is short enough, you simply need to end each statement with a semicolon however, it is rare to see this in actual use.&lt;br /&gt;
&lt;br /&gt;
'''Method examples'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 def foo(x,y)&lt;br /&gt;
    return [x, y+1]&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 def foo(x, y=0)&lt;br /&gt;
    [x, y+1]&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results of calling the above methods&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 a,b = foo(x,y)  #a is assigned the value of x and b is assigned the value of y+1&lt;br /&gt;
 a,b = foo(x)    #a is assigned the value of x and b is assigned the value of 0+1 or 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
Ruby provides all of the normal comparison operators for use.  This also includes the '=~' and '!~' operators that are used with regular expressions in Ruby.  Ruby defines true, false and, nil as constants.  False or nil are the only things in Ruby that evaluate to false everything else evaluates to true.  This is different from other languages where the empty string or the value 0 will evaluate to false as well.&lt;br /&gt;
&lt;br /&gt;
Ruby fully supports regular expressions the syntax used is borrowed from Perl, Python and, other languages.  The =~ will compare to a regular expression and !~ will define a not equal.  Please see the references section to find more information on Ruby regular expressions and a useful site that can help you generate your regular expressions in Ruby that is mentioned in the video.  When working with regular expressions in Ruby, you're generally comparing to a string.  There are various ways to represent a string in Ruby.  Please refer to the variables section for more information on strings.  A regular expression in Ruby will return false if there are no matches and will return a set of objects if true.  The set of objects that is returned is from $1..$n parenthesized groups which are all of the groups that matched on the expression.&lt;br /&gt;
&lt;br /&gt;
'''Regular expression example'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 &amp;quot;fox@berkeley.edu&amp;quot; =~ /(.*)@(.*)\.edu$/i  #This code will capture ($1 == 'fox', $2 =='berkeley')&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://ruby.about.com/od/rubyfeatures/a/comment.htm Comments in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66329</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66329"/>
		<updated>2012-10-03T04:49:04Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Methods */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.  Global variables in Ruby are always defined with a leading dollar symbol ($).  One item the video does not go over but will be helpful to Ruby programmers is that single line comments in ruby begin with the hash (#) character.  Ruby also has multiline comments like other languages which are denoted with the tokens =begin and =end.  Please see the [[#References|references]]section for more information on comments in Ruby.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example from the references links below written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comments in Ruby are&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
In Ruby local variables do not have a value until they are explicitly given one.  This means that all local variables, this includes instance and class variables, must be assigned before use otherwise they are have the value of nil.  The keyword nil in Ruby is exactly the same as null in other languages.  Variable definitions are not valid in Ruby, you will never see a class name prior to a variable.  Constant variables are always scoped to where they are defined (local or class) however, Global variables are accessible anywhere and at any time.  In Ruby just like other languages you want to avoid the use of global variables if at all possible.  &lt;br /&gt;
&lt;br /&gt;
When working with variables in Ruby it is important to remember that in Ruby objects have types but the variables that you use do not.  This can be a bit difficult to wrap your head around but, it is a fundamental aspect of how Ruby works.  You can think of the variable you created as an untyped container and that while you can put any specific object into that container it does not make the container into that object.&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java however, Ruby also includes a special type of string called a symbol.  Symbols are essentially [en.wikipedia.org/wiki/Immutable_object immutable] strings and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
'''Variable Examples'''&amp;lt;br&amp;gt;&lt;br /&gt;
Valid variable declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = 3&lt;br /&gt;
 x = 'foo'&lt;br /&gt;
 x = [1, 'two', :three]  #The three lines above are all valid because the variable x does not have a type&lt;br /&gt;
 DEBUG_MODE = true&lt;br /&gt;
 $DEBUG_MODE = true   #Global variable - make every effort not to use this&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Invalid declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Integer x&lt;br /&gt;
 Integer x = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = 'Hello World'&lt;br /&gt;
 mystring = &amp;quot;Hello World #&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example of a Symbol&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = :hello&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String and symbol interaction examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 :hello.to_s == &amp;quot;hello&amp;quot;&lt;br /&gt;
 &amp;quot;hello&amp;quot;.to_sym == :hello&lt;br /&gt;
 :hello == &amp;quot;hello&amp;quot; #Always evaluates to false&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Arrays are fairly similar to most other languages in that you have access to the usual properties although in Ruby they're actually method calls.  A Ruby array can have any number of different types included in them.  This is drastically different from other languages where you have to declare the type of objects that are stored in the array.  Ruby also implements hashes and much like their array counterparts, have all of the normal hash methods defined but again do not have to have consistent types across keys and values.  In practice, you generally try to keep the types consistent across the elements of your array or hash but, this is a convention and is not required by the compiler.  In some programming cases, you will not be able to do this.&lt;br /&gt;
&lt;br /&gt;
'''Array Examples'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = [1, 'two', :three]&lt;br /&gt;
 x[1] == 'two'&lt;br /&gt;
 x.length == 3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Hash Examples'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 w = {'a' =&amp;gt; 1, :b =&amp;gt; [2, 3]}&lt;br /&gt;
 w[:b][0] == 2&lt;br /&gt;
 w.keys == ['a', :b]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
In Ruby, everything in method calls is passed by reference except for [http://www.ruby-doc.org/core-1.9.3/Fixnum.html fixnums].  The last statement in a method call is returned at the end of the method call.  This touches on the syntactic sugar that we mentioned before, it is not necessary to specify the keyword return although it may be helpful to do so in a more complex application.  You can specify default values for your input parameters however, they must come after the variable input parameters otherwise the Ruby interpreter will not be able to properly parse the method definition.  It is also possible to create a method on a single line if the method is short enough, you simply need to end each statement with a semicolon however, it is rare to see this in actual use.&lt;br /&gt;
&lt;br /&gt;
'''Method examples'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 def foo(x,y)&lt;br /&gt;
    return [x, y+1]&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 def foo(x, y=0)&lt;br /&gt;
    [x, y+1]&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results of calling the above methods&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 a,b = foo(x,y)  #a is assigned the value of x and b is assigned the value of y+1&lt;br /&gt;
 a,b = foo(x)    #a is assigned the value of x and b is assigned the value of 0+1 or 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://ruby.about.com/od/rubyfeatures/a/comment.htm Comments in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66324</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66324"/>
		<updated>2012-10-03T04:39:19Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Arrays and Hashes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.  Global variables in Ruby are always defined with a leading dollar symbol ($).  One item the video does not go over but will be helpful to Ruby programmers is that single line comments in ruby begin with the hash (#) character.  Ruby also has multiline comments like other languages which are denoted with the tokens =begin and =end.  Please see the [[#References|references]]section for more information on comments in Ruby.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example from the references links below written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comments in Ruby are&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
In Ruby local variables do not have a value until they are explicitly given one.  This means that all local variables, this includes instance and class variables, must be assigned before use otherwise they are have the value of nil.  The keyword nil in Ruby is exactly the same as null in other languages.  Variable definitions are not valid in Ruby, you will never see a class name prior to a variable.  Constant variables are always scoped to where they are defined (local or class) however, Global variables are accessible anywhere and at any time.  In Ruby just like other languages you want to avoid the use of global variables if at all possible.  &lt;br /&gt;
&lt;br /&gt;
When working with variables in Ruby it is important to remember that in Ruby objects have types but the variables that you use do not.  This can be a bit difficult to wrap your head around but, it is a fundamental aspect of how Ruby works.  You can think of the variable you created as an untyped container and that while you can put any specific object into that container it does not make the container into that object.&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java however, Ruby also includes a special type of string called a symbol.  Symbols are essentially [en.wikipedia.org/wiki/Immutable_object immutable] strings and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
'''Variable Examples'''&amp;lt;br&amp;gt;&lt;br /&gt;
Valid variable declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = 3&lt;br /&gt;
 x = 'foo'&lt;br /&gt;
 x = [1, 'two', :three]  #The three lines above are all valid because the variable x does not have a type&lt;br /&gt;
 DEBUG_MODE = true&lt;br /&gt;
 $DEBUG_MODE = true   #Global variable - make every effort not to use this&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Invalid declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Integer x&lt;br /&gt;
 Integer x = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = 'Hello World'&lt;br /&gt;
 mystring = &amp;quot;Hello World #&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example of a Symbol&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = :hello&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String and symbol interaction examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 :hello.to_s == &amp;quot;hello&amp;quot;&lt;br /&gt;
 &amp;quot;hello&amp;quot;.to_sym == :hello&lt;br /&gt;
 :hello == &amp;quot;hello&amp;quot; #Always evaluates to false&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Arrays are fairly similar to most other languages in that you have access to the usual properties although in Ruby they're actually method calls.  A Ruby array can have any number of different types included in them.  This is drastically different from other languages where you have to declare the type of objects that are stored in the array.  Ruby also implements hashes and much like their array counterparts, have all of the normal hash methods defined but again do not have to have consistent types across keys and values.  In practice, you generally try to keep the types consistent across the elements of your array or hash but, this is a convention and is not required by the compiler.  In some programming cases, you will not be able to do this.&lt;br /&gt;
&lt;br /&gt;
'''Array Examples'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = [1, 'two', :three]&lt;br /&gt;
 x[1] == 'two'&lt;br /&gt;
 x.length == 3&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Hash Examples'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 w = {'a' =&amp;gt; 1, :b =&amp;gt; [2, 3]}&lt;br /&gt;
 w[:b][0] == 2&lt;br /&gt;
 w.keys == ['a', :b]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://ruby.about.com/od/rubyfeatures/a/comment.htm Comments in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66319</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66319"/>
		<updated>2012-10-03T04:33:28Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Variables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.  Global variables in Ruby are always defined with a leading dollar symbol ($).  One item the video does not go over but will be helpful to Ruby programmers is that single line comments in ruby begin with the hash (#) character.  Ruby also has multiline comments like other languages which are denoted with the tokens =begin and =end.  Please see the [[#References|references]]section for more information on comments in Ruby.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example from the references links below written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comments in Ruby are&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
In Ruby local variables do not have a value until they are explicitly given one.  This means that all local variables, this includes instance and class variables, must be assigned before use otherwise they are have the value of nil.  The keyword nil in Ruby is exactly the same as null in other languages.  Variable definitions are not valid in Ruby, you will never see a class name prior to a variable.  Constant variables are always scoped to where they are defined (local or class) however, Global variables are accessible anywhere and at any time.  In Ruby just like other languages you want to avoid the use of global variables if at all possible.  &lt;br /&gt;
&lt;br /&gt;
When working with variables in Ruby it is important to remember that in Ruby objects have types but the variables that you use do not.  This can be a bit difficult to wrap your head around but, it is a fundamental aspect of how Ruby works.  You can think of the variable you created as an untyped container and that while you can put any specific object into that container it does not make the container into that object.&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java however, Ruby also includes a special type of string called a symbol.  Symbols are essentially [en.wikipedia.org/wiki/Immutable_object immutable] strings and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
'''Variable Examples'''&amp;lt;br&amp;gt;&lt;br /&gt;
Valid variable declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = 3&lt;br /&gt;
 x = 'foo'&lt;br /&gt;
 x = [1, 'two', :three]  #The three lines above are all valid because the variable x does not have a type&lt;br /&gt;
 DEBUG_MODE = true&lt;br /&gt;
 $DEBUG_MODE = true   #Global variable - make every effort not to use this&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Invalid declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Integer x&lt;br /&gt;
 Integer x = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = 'Hello World'&lt;br /&gt;
 mystring = &amp;quot;Hello World #&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example of a Symbol&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = :hello&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String and symbol interaction examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 :hello.to_s == &amp;quot;hello&amp;quot;&lt;br /&gt;
 &amp;quot;hello&amp;quot;.to_sym == :hello&lt;br /&gt;
 :hello == &amp;quot;hello&amp;quot; #Always evaluates to false&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Arrays are fairly similar to most other languages in that you have access to the usual properties although in Ruby they're actually method calls.  &lt;br /&gt;
&lt;br /&gt;
Hashes, also known as dictionaries, are like arrays that have key-&amp;gt;value pairs as their entries.  The values for each key does not have to be the same type as the key that references it.&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://ruby.about.com/od/rubyfeatures/a/comment.htm Comments in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66318</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66318"/>
		<updated>2012-10-03T04:32:42Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Variables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.  Global variables in Ruby are always defined with a leading dollar symbol ($).  One item the video does not go over but will be helpful to Ruby programmers is that single line comments in ruby begin with the hash (#) character.  Ruby also has multiline comments like other languages which are denoted with the tokens =begin and =end.  Please see the [[#References|references]]section for more information on comments in Ruby.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example from the references links below written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comments in Ruby are&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
In Ruby local variables do not have a value until they are explicitly given one.  This means that all local variables, this includes instance and class variables, must be assigned before use otherwise they are have the value of nil.  The keyword nil in Ruby is exactly the same as null in other languages.  Variable definitions are not valid in Ruby, you will never see a class name prior to a variable.  Constant variables are always scoped to where they are defined (local or class) however, Global variables are accessible anywhere and at any time.  In Ruby just like other languages you want to avoid the use of global variables if at all possible.  &lt;br /&gt;
&lt;br /&gt;
When working with variables in Ruby it is important to remember that in Ruby objects have types but the variables that you use do not.  This can be a bit difficult to wrap your head around but, it is a fundamental aspect of how Ruby works.  You can think of the variable you created as an untyped container and that while you can put any specific object into that container it does not make the container into that object.&lt;br /&gt;
&lt;br /&gt;
'''Variable Examples'''&amp;lt;br&amp;gt;&lt;br /&gt;
Valid variable declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = 3&lt;br /&gt;
 x = 'foo'&lt;br /&gt;
 x = [1, 'two', :three]  #The three lines above are all valid because the variable x does not have a type&lt;br /&gt;
 DEBUG_MODE = true&lt;br /&gt;
 $DEBUG_MODE = true   #Global variable - make every effort not to use this&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Invalid declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Integer x&lt;br /&gt;
 Integer x = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java however, Ruby also includes a special type of string called a symbol.  Symbols are essentially [en.wikipedia.org/wiki/Immutable_object immutable] strings and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
String examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = 'Hello World'&lt;br /&gt;
 mystring = &amp;quot;Hello World #&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Symbol examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = :hello&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String and symbol interaction examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 :hello.to_s == &amp;quot;hello&amp;quot;&lt;br /&gt;
 &amp;quot;hello&amp;quot;.to_sym == :hello&lt;br /&gt;
 :hello == &amp;quot;hello&amp;quot; #Always evaluates to false&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Arrays are fairly similar to most other languages in that you have access to the usual properties although in Ruby they're actually method calls.  &lt;br /&gt;
&lt;br /&gt;
Hashes, also known as dictionaries, are like arrays that have key-&amp;gt;value pairs as their entries.  The values for each key does not have to be the same type as the key that references it.&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://ruby.about.com/od/rubyfeatures/a/comment.htm Comments in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66317</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66317"/>
		<updated>2012-10-03T04:32:26Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Variables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.  Global variables in Ruby are always defined with a leading dollar symbol ($).  One item the video does not go over but will be helpful to Ruby programmers is that single line comments in ruby begin with the hash (#) character.  Ruby also has multiline comments like other languages which are denoted with the tokens =begin and =end.  Please see the [[#References|references]]section for more information on comments in Ruby.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example from the references links below written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comments in Ruby are&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
In Ruby local variables do not have a value until they are explicitly given one.  This means that all local variables, this includes instance and class variables, must be assigned before use otherwise they are have the value of nil.  The keyword nil in Ruby is exactly the same as null in other languages.  Variable definitions are not valid in Ruby, you will never see a class name prior to a variable.  Constant variables are always scoped to where they are defined (local or class) however, Global variables are accessible anywhere and at any time.  In Ruby just like other languages you want to avoid the use of global variables if at all possible.  &lt;br /&gt;
&lt;br /&gt;
When working with variables in Ruby it is important to remember that in Ruby objects have types but the variables that you use do not.  This can be a bit difficult to wrap your head around but, it is a fundamental aspect of how Ruby works.  You can think of the variable you created as an untyped container and that while you can put any specific object into that container it does not make the container into that object.&lt;br /&gt;
&lt;br /&gt;
'''Variable Examples'''&lt;br /&gt;
Valid variable declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = 3&lt;br /&gt;
 x = 'foo'&lt;br /&gt;
 x = [1, 'two', :three]  #The three lines above are all valid because the variable x does not have a type&lt;br /&gt;
 DEBUG_MODE = true&lt;br /&gt;
 $DEBUG_MODE = true   #Global variable - make every effort not to use this&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Invalid declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Integer x&lt;br /&gt;
 Integer x = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java however, Ruby also includes a special type of string called a symbol.  Symbols are essentially [en.wikipedia.org/wiki/Immutable_object immutable] strings and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
String examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = 'Hello World'&lt;br /&gt;
 mystring = &amp;quot;Hello World #&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Symbol examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = :hello&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String and symbol interaction examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 :hello.to_s == &amp;quot;hello&amp;quot;&lt;br /&gt;
 &amp;quot;hello&amp;quot;.to_sym == :hello&lt;br /&gt;
 :hello == &amp;quot;hello&amp;quot; #Always evaluates to false&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Arrays are fairly similar to most other languages in that you have access to the usual properties although in Ruby they're actually method calls.  &lt;br /&gt;
&lt;br /&gt;
Hashes, also known as dictionaries, are like arrays that have key-&amp;gt;value pairs as their entries.  The values for each key does not have to be the same type as the key that references it.&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://ruby.about.com/od/rubyfeatures/a/comment.htm Comments in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66316</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66316"/>
		<updated>2012-10-03T04:29:55Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Arrays and Hashes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.  Global variables in Ruby are always defined with a leading dollar symbol ($).  One item the video does not go over but will be helpful to Ruby programmers is that single line comments in ruby begin with the hash (#) character.  Ruby also has multiline comments like other languages which are denoted with the tokens =begin and =end.  Please see the [[#References|references]]section for more information on comments in Ruby.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example from the references links below written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comments in Ruby are&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
In Ruby local variables do not have a value until they are explicitly given one.  This means that all local variables, this includes instance and class variables, must be assigned before use otherwise they are have the value of nil.  The keyword nil in Ruby is exactly the same as null in other languages.  Variable definitions are not valid in Ruby, you will never see a class name prior to a variable.  Constant variables are always scoped to where they are defined (local or class) however, Global variables are accessible anywhere and at any time.  In Ruby just like other languages you want to avoid the use of global variables if at all possible.&lt;br /&gt;
&lt;br /&gt;
'''Variable Examples'''&lt;br /&gt;
Valid variable declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = 3&lt;br /&gt;
 x = 'foo'&lt;br /&gt;
 x = [1, 'two', :three]&lt;br /&gt;
 DEBUG_MODE = true&lt;br /&gt;
 $DEBUG_MODE = true   #Global variable - make every effort not to use this&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Invalid declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Integer x&lt;br /&gt;
 Integer x = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java however, Ruby also includes a special type of string called a symbol.  Symbols are essentially [en.wikipedia.org/wiki/Immutable_object immutable] strings and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
String examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = 'Hello World'&lt;br /&gt;
 mystring = &amp;quot;Hello World #&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Symbol examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = :hello&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String and symbol interaction examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 :hello.to_s == &amp;quot;hello&amp;quot;&lt;br /&gt;
 &amp;quot;hello&amp;quot;.to_sym == :hello&lt;br /&gt;
 :hello == &amp;quot;hello&amp;quot; #Always evaluates to false&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Arrays are fairly similar to most other languages in that you have access to the usual properties although in Ruby they're actually method calls.  &lt;br /&gt;
&lt;br /&gt;
Hashes, also known as dictionaries, are like arrays that have key-&amp;gt;value pairs as their entries.  The values for each key does not have to be the same type as the key that references it.&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://ruby.about.com/od/rubyfeatures/a/comment.htm Comments in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66314</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66314"/>
		<updated>2012-10-03T04:27:54Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Naming conventions and general syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.  Global variables in Ruby are always defined with a leading dollar symbol ($).  One item the video does not go over but will be helpful to Ruby programmers is that single line comments in ruby begin with the hash (#) character.  Ruby also has multiline comments like other languages which are denoted with the tokens =begin and =end.  Please see the [[#References|references]]section for more information on comments in Ruby.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example from the references links below written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comments in Ruby are&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
In Ruby local variables do not have a value until they are explicitly given one.  This means that all local variables, this includes instance and class variables, must be assigned before use otherwise they are have the value of nil.  The keyword nil in Ruby is exactly the same as null in other languages.  Variable definitions are not valid in Ruby, you will never see a class name prior to a variable.  Constant variables are always scoped to where they are defined (local or class) however, Global variables are accessible anywhere and at any time.  In Ruby just like other languages you want to avoid the use of global variables if at all possible.&lt;br /&gt;
&lt;br /&gt;
'''Variable Examples'''&lt;br /&gt;
Valid variable declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = 3&lt;br /&gt;
 x = 'foo'&lt;br /&gt;
 x = [1, 'two', :three]&lt;br /&gt;
 DEBUG_MODE = true&lt;br /&gt;
 $DEBUG_MODE = true   #Global variable - make every effort not to use this&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Invalid declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Integer x&lt;br /&gt;
 Integer x = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java however, Ruby also includes a special type of string called a symbol.  Symbols are essentially [en.wikipedia.org/wiki/Immutable_object immutable] strings and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
String examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = 'Hello World'&lt;br /&gt;
 mystring = &amp;quot;Hello World #&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Symbol examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = :hello&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String and symbol interaction examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 :hello.to_s == &amp;quot;hello&amp;quot;&lt;br /&gt;
 &amp;quot;hello&amp;quot;.to_sym == :hello&lt;br /&gt;
 :hello == &amp;quot;hello&amp;quot; #Always evaluates to false&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Hashes, also known as dictionaries, are like arrays that have key-&amp;gt;value pairs as their entries.  The values for each key does not have to be the same type as the key that references it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://ruby.about.com/od/rubyfeatures/a/comment.htm Comments in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66312</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66312"/>
		<updated>2012-10-03T04:27:17Z</updated>

		<summary type="html">&lt;p&gt;Defranks: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.  Global variables in Ruby are always defined with a leading dollar symbol ($).  One item the video does not go over but will be helpful to Ruby programmers is that single line comments in ruby begin with the hash (#) character.  Ruby also has multiline comments like other languages which are denoted with the tokens =begin and =end.  Please see the [[#References|references]]section for more information on comments in Ruby.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;THe question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example from the references links below written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comments in Ruby are&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
In Ruby local variables do not have a value until they are explicitly given one.  This means that all local variables, this includes instance and class variables, must be assigned before use otherwise they are have the value of nil.  The keyword nil in Ruby is exactly the same as null in other languages.  Variable definitions are not valid in Ruby, you will never see a class name prior to a variable.  Constant variables are always scoped to where they are defined (local or class) however, Global variables are accessible anywhere and at any time.  In Ruby just like other languages you want to avoid the use of global variables if at all possible.&lt;br /&gt;
&lt;br /&gt;
'''Variable Examples'''&lt;br /&gt;
Valid variable declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = 3&lt;br /&gt;
 x = 'foo'&lt;br /&gt;
 x = [1, 'two', :three]&lt;br /&gt;
 DEBUG_MODE = true&lt;br /&gt;
 $DEBUG_MODE = true   #Global variable - make every effort not to use this&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Invalid declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Integer x&lt;br /&gt;
 Integer x = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java however, Ruby also includes a special type of string called a symbol.  Symbols are essentially [en.wikipedia.org/wiki/Immutable_object immutable] strings and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
String examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = 'Hello World'&lt;br /&gt;
 mystring = &amp;quot;Hello World #&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Symbol examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = :hello&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String and symbol interaction examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 :hello.to_s == &amp;quot;hello&amp;quot;&lt;br /&gt;
 &amp;quot;hello&amp;quot;.to_sym == :hello&lt;br /&gt;
 :hello == &amp;quot;hello&amp;quot; #Always evaluates to false&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Hashes, also known as dictionaries, are like arrays that have key-&amp;gt;value pairs as their entries.  The values for each key does not have to be the same type as the key that references it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://ruby.about.com/od/rubyfeatures/a/comment.htm Comments in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66307</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66307"/>
		<updated>2012-10-03T04:24:14Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Naming conventions and general syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.  Global variables in Ruby are always defined with a leading dollar symbol ($).&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;THe question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example from the references links below written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comments in Ruby are&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
In Ruby local variables do not have a value until they are explicitly given one.  This means that all local variables, this includes instance and class variables, must be assigned before use otherwise they are have the value of nil.  The keyword nil in Ruby is exactly the same as null in other languages.  Variable definitions are not valid in Ruby, you will never see a class name prior to a variable.  Constant variables are always scoped to where they are defined (local or class) however, Global variables are accessible anywhere and at any time.  In Ruby just like other languages you want to avoid the use of global variables if at all possible.&lt;br /&gt;
&lt;br /&gt;
'''Variable Examples'''&lt;br /&gt;
Valid variable declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = 3&lt;br /&gt;
 x = 'foo'&lt;br /&gt;
 x = [1, 'two', :three]&lt;br /&gt;
 DEBUG_MODE = true&lt;br /&gt;
 $DEBUG_MODE = true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Invalid declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Integer x&lt;br /&gt;
 Integer x = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java however, Ruby also includes a special type of string called a symbol.  Symbols are essentially [en.wikipedia.org/wiki/Immutable_object immutable] strings and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
String examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = 'Hello World'&lt;br /&gt;
 mystring = &amp;quot;Hello World #&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Symbol examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = :hello&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String and symbol interaction examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 :hello.to_s == &amp;quot;hello&amp;quot;&lt;br /&gt;
 &amp;quot;hello&amp;quot;.to_sym == :hello&lt;br /&gt;
 :hello == &amp;quot;hello&amp;quot; #evaluate to false&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Hashes, also known as dictionaries, are like arrays that have key-&amp;gt;value pairs as their entries.  The values for each key does not have to be the same type as the key that references it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66306</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66306"/>
		<updated>2012-10-03T04:22:54Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Variables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.  Global variables in Ruby are always defined with a leading dollar symbol ($).&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;THe question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example from the references links below written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
In Ruby local variables do not have a value until they are explicitly given one.  This means that all local variables, this includes instance and class variables, must be assigned before use otherwise they are have the value of nil.  The keyword nil in Ruby is exactly the same as null in other languages.  Variable definitions are not valid in Ruby, you will never see a class name prior to a variable.  Constant variables are always scoped to where they are defined (local or class) however, Global variables are accessible anywhere and at any time.  In Ruby just like other languages you want to avoid the use of global variables if at all possible.&lt;br /&gt;
&lt;br /&gt;
'''Variable Examples'''&lt;br /&gt;
Valid variable declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = 3&lt;br /&gt;
 x = 'foo'&lt;br /&gt;
 x = [1, 'two', :three]&lt;br /&gt;
 DEBUG_MODE = true&lt;br /&gt;
 $DEBUG_MODE = true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Invalid declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Integer x&lt;br /&gt;
 Integer x = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java however, Ruby also includes a special type of string called a symbol.  Symbols are essentially [en.wikipedia.org/wiki/Immutable_object immutable] strings and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
String examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = 'Hello World'&lt;br /&gt;
 mystring = &amp;quot;Hello World #&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Symbol examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = :hello&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String and symbol interaction examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 :hello.to_s == &amp;quot;hello&amp;quot;&lt;br /&gt;
 &amp;quot;hello&amp;quot;.to_sym == :hello&lt;br /&gt;
 :hello == &amp;quot;hello&amp;quot; #evaluate to false&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Hashes, also known as dictionaries, are like arrays that have key-&amp;gt;value pairs as their entries.  The values for each key does not have to be the same type as the key that references it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66304</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66304"/>
		<updated>2012-10-03T04:22:35Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Variables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.  Global variables in Ruby are always defined with a leading dollar symbol ($).&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;THe question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example from the references links below written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
In Ruby local variables do not have a value until they are explicitly given one.  This means that all local variables, this includes instance and class variables, must be assigned before use otherwise they are have the value of nil.  The keyword nil in Ruby is exactly the same as null in other languages.  Variable definitions are not valid in Ruby, you will never see a class name prior to a variable.  Constant variables are always scoped to where they are defined (local or class) however, Global variables are accessible anywhere and at any time.  In Ruby just like other languages you want to avoid the use of global variables if at all possible.&lt;br /&gt;
&lt;br /&gt;
'''Variable Examples'''&lt;br /&gt;
Valid variable declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = 3&lt;br /&gt;
 x = 'foo'&lt;br /&gt;
 x = [1, 'two', :three]&lt;br /&gt;
 DEBUG_MODE = true&lt;br /&gt;
 $DEBUG_MODE = true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Invalid declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Integer x&lt;br /&gt;
 Integer x = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java however, Ruby also includes a special type of string called a symbol.  Symbols are essentially [en.wikipedia.org/wiki/Immutable_object immutable] strings and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
String examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = 'Hello World'&lt;br /&gt;
 mystring = &amp;quot;Hello World #&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Symbol examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = :hello&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String and symbol interaction examples&amp;lt;br&amp;gt;Note in this set of examples, the hash (#) character denotes the beginning of a comment&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 :hello.to_s == &amp;quot;hello&amp;quot;&lt;br /&gt;
 &amp;quot;hello&amp;quot;.to_sym == :hello&lt;br /&gt;
 :hello == &amp;quot;hello&amp;quot; #evaluate to false&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Hashes, also known as dictionaries, are like arrays that have key-&amp;gt;value pairs as their entries.  The values for each key does not have to be the same type as the key that references it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66303</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66303"/>
		<updated>2012-10-03T04:21:37Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Naming conventions and general syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.  Global variables in Ruby are always defined with a leading dollar symbol ($).&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;THe question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example from the references links below written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
In Ruby local variables do not have a value until they are explicitly given one.  This means that all local variables, this includes instance and class variables, must be assigned before use otherwise they are have the value of nil.  The keyword nil in Ruby is exactly the same as null in other languages.  Variable definitions are not valid in Ruby, you will never see a class name prior to a variable.  Constant variables are always scoped to where they are defined (local or class) however, Global variables are accessible anywhere and at any time.  In Ruby just like other languages you want to avoid the use of global variables if at all possible.&lt;br /&gt;
&lt;br /&gt;
'''Variable Examples'''&lt;br /&gt;
Valid variable declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = 3&lt;br /&gt;
 x = 'foo'&lt;br /&gt;
 x = [1, 'two', :three]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Invalid declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Integer x&lt;br /&gt;
 Integer x = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java however, Ruby also includes a special type of string called a symbol.  Symbols are essentially [en.wikipedia.org/wiki/Immutable_object immutable] strings and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
String examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = 'Hello World'&lt;br /&gt;
 mystring = &amp;quot;Hello World #&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Symbol examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = :hello&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String and symbol interaction examples&amp;lt;br&amp;gt;Note in this set of examples, the hash (#) character denotes the beginning of a comment&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 :hello.to_s == &amp;quot;hello&amp;quot;&lt;br /&gt;
 &amp;quot;hello&amp;quot;.to_sym == :hello&lt;br /&gt;
 :hello == &amp;quot;hello&amp;quot; #evaluate to false&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Hashes, also known as dictionaries, are like arrays that have key-&amp;gt;value pairs as their entries.  The values for each key does not have to be the same type as the key that references it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66301</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66301"/>
		<updated>2012-10-03T04:20:24Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* Variables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;THe question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
In Ruby local variables do not have a value until they are explicitly given one.  This means that all local variables, this includes instance and class variables, must be assigned before use otherwise they are have the value of nil.  The keyword nil in Ruby is exactly the same as null in other languages.  Variable definitions are not valid in Ruby, you will never see a class name prior to a variable.  Constant variables are always scoped to where they are defined (local or class) however, Global variables are accessible anywhere and at any time.  In Ruby just like other languages you want to avoid the use of global variables if at all possible.&lt;br /&gt;
&lt;br /&gt;
'''Variable Examples'''&lt;br /&gt;
Valid variable declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 x = 3&lt;br /&gt;
 x = 'foo'&lt;br /&gt;
 x = [1, 'two', :three]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Invalid declarations&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Integer x&lt;br /&gt;
 Integer x = 1&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java however, Ruby also includes a special type of string called a symbol.  Symbols are essentially [en.wikipedia.org/wiki/Immutable_object immutable] strings and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
String examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = 'Hello World'&lt;br /&gt;
 mystring = &amp;quot;Hello World #&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Symbol examples&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 mystring = :hello&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
String and symbol interaction examples&amp;lt;br&amp;gt;Note in this set of examples, the hash (#) character denotes the beginning of a comment&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 :hello.to_s == &amp;quot;hello&amp;quot;&lt;br /&gt;
 &amp;quot;hello&amp;quot;.to_sym == :hello&lt;br /&gt;
 :hello == &amp;quot;hello&amp;quot; #evaluate to false&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Hashes, also known as dictionaries, are like arrays that have key-&amp;gt;value pairs as their entries.  The values for each key does not have to be the same type as the key that references it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66275</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66275"/>
		<updated>2012-10-03T03:58:37Z</updated>

		<summary type="html">&lt;p&gt;Defranks: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;THe question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java.  You can find their length, concatenate them, find sub-strings, and use regex expressions on them as well. Most of these features, save the last, are built right in to the string data type used.&lt;br /&gt;
&lt;br /&gt;
Symbols are special types in Ruby.  Essentially they are immutable strings (they cannot be changed) and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Hashes, also known as dictionaries, are like arrays that have key-&amp;gt;value pairs as their entries.  The values for each key does not have to be the same type as the key that references it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66270</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66270"/>
		<updated>2012-10-03T03:58:02Z</updated>

		<summary type="html">&lt;p&gt;Defranks: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;THe question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comparisons and regular expressions==&lt;br /&gt;
Ruby is an OO language but unlike other such languages everything in Ruby is an object.  Anything created in Ruby can have messages passed to it or be referenced like an object at any time; whether or not this will do anything is determined by what is referenced.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java.  You can find their length, concatenate them, find sub-strings, and use regex expressions on them as well. Most of these features, save the last, are built right in to the string data type used.&lt;br /&gt;
&lt;br /&gt;
Symbols are special types in Ruby.  Essentially they are immutable strings (they cannot be changed) and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Hashes, also known as dictionaries, are like arrays that have key-&amp;gt;value pairs as their entries.  The values for each key does not have to be the same type as the key that references it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66268</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66268"/>
		<updated>2012-10-03T03:57:35Z</updated>

		<summary type="html">&lt;p&gt;Defranks: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;THe question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Comparison expressions and regular expressions==&lt;br /&gt;
Ruby is an OO language but unlike other such languages everything in Ruby is an object.  Anything created in Ruby can have messages passed to it or be referenced like an object at any time; whether or not this will do anything is determined by what is referenced.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java.  You can find their length, concatenate them, find sub-strings, and use regex expressions on them as well. Most of these features, save the last, are built right in to the string data type used.&lt;br /&gt;
&lt;br /&gt;
Symbols are special types in Ruby.  Essentially they are immutable strings (they cannot be changed) and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
==Arrays and Hashes==&lt;br /&gt;
&lt;br /&gt;
Hashes, also known as dictionaries, are like arrays that have key-&amp;gt;value pairs as their entries.  The values for each key does not have to be the same type as the key that references it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66259</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66259"/>
		<updated>2012-10-03T03:55:17Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;THe question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objects==&lt;br /&gt;
Ruby is an OO language but unlike other such languages everything in Ruby is an object.  Anything created in Ruby can have messages passed to it or be referenced like an object at any time; whether or not this will do anything is determined by what is referenced.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java.  You can find their length, concatenate them, find sub-strings, and use regex expressions on them as well. Most of these features, save the last, are built right in to the string data type used.&lt;br /&gt;
&lt;br /&gt;
Symbols are special types in Ruby.  Essentially they are immutable strings (they cannot be changed) and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
-Arrays&lt;br /&gt;
&lt;br /&gt;
Hashes, also known as dictionaries, are like arrays that have key-&amp;gt;value pairs as their entries.  The values for each key does not have to be the same type as the key that references it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=EvQlaJeUiHA Coursera - SaaS - 3.5 - Ruby Metaprogramming] &lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66251</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66251"/>
		<updated>2012-10-03T03:51:25Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;THe question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objects==&lt;br /&gt;
Ruby is an OO language but unlike other such languages everything in Ruby is an object.  Anything created in Ruby can have messages passed to it or be referenced like an object at any time; whether or not this will do anything is determined by what is referenced.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java.  You can find their length, concatenate them, find sub-strings, and use regex expressions on them as well. Most of these features, save the last, are built right in to the string data type used.&lt;br /&gt;
&lt;br /&gt;
Symbols are special types in Ruby.  Essentially they are immutable strings (they cannot be changed) and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
-Arrays&lt;br /&gt;
&lt;br /&gt;
Hashes, also known as dictionaries, are like arrays that have key-&amp;gt;value pairs as their entries.  The values for each key does not have to be the same type as the key that references it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[http://tryruby.org/ Try Ruby]&lt;br /&gt;
A helpful site that provides an easy to access interface to execute ruby code&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/Ruby_By_Examples Ruby Wiki book]&lt;br /&gt;
This book discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
[http://rubyinstaller.org/ Link to download Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Ruby_(programming_language)Ruby's Wikipedia page]&lt;br /&gt;
&lt;br /&gt;
[http://www.rubyist.net/~slagell/ruby/examples.html Ruby Example Code]&lt;br /&gt;
&lt;br /&gt;
[http://sandbox.mc.edu/~bennet/ruby/code/index.html More example code]&lt;br /&gt;
&lt;br /&gt;
[http://ruby-metaprogramming.rubylearning.com/ Metaprogramming and Ruby]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=OkVPCYe-cjk Object oriented programming in Ruby]&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66246</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66246"/>
		<updated>2012-10-03T03:48:02Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* What is Ruby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[#References|references]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;THe question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objects==&lt;br /&gt;
Ruby is an OO language but unlike other such languages everything in Ruby is an object.  Anything created in Ruby can have messages passed to it or be referenced like an object at any time; whether or not this will do anything is determined by what is referenced.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java.  You can find their length, concatenate them, find sub-strings, and use regex expressions on them as well. Most of these features, save the last, are built right in to the string data type used.&lt;br /&gt;
&lt;br /&gt;
Symbols are special types in Ruby.  Essentially they are immutable strings (they cannot be changed) and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
-Arrays&lt;br /&gt;
&lt;br /&gt;
Hashes, also known as dictionaries, are like arrays that have key-&amp;gt;value pairs as their entries.  The values for each key does not have to be the same type as the key that references it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
http://tryruby.org/ - A helpful site that provides an interface to execute your ruby code&lt;br /&gt;
&lt;br /&gt;
http://en.wikibooks.org/wiki/Ruby_By_Examples - Wiki book that discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
http://rubyinstaller.org/ - Link to download Ruby&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Ruby_(programming_language)- Wikipedia page&lt;br /&gt;
&lt;br /&gt;
http://www.rubyist.net/~slagell/ruby/examples.html - Ruby Example Code&lt;br /&gt;
&lt;br /&gt;
http://sandbox.mc.edu/~bennet/ruby/code/index.html - More example code&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66242</id>
		<title>CSC/ECE 517 Fall 2012/ch1b 1w54 go</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2012/ch1b_1w54_go&amp;diff=66242"/>
		<updated>2012-10-03T03:46:45Z</updated>

		<summary type="html">&lt;p&gt;Defranks: /* What is Ruby */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;SaaS Ruby 101&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
The Coursera video series were created to give free college level lessons to anyone with internet access.  The [http://www.youtube.com/watch?v=rC9yrukjU5g Saas video] discussed in this wiki page is the Ruby 101 provided by California University.  The video covers the fundamentals of the Ruby language and the basic concepts needed to write programs.  More information about the language can be found at its [http://en.wikipedia.org/wiki/Ruby_(programming_language) Wikipedia page].&lt;br /&gt;
&lt;br /&gt;
The sections below will highlight the key points of the video lecture and try to help provide further detail surrounding the concepts in the video.&lt;br /&gt;
&lt;br /&gt;
==What is Ruby==&lt;br /&gt;
The Ruby language is an interpreted scripting language, meaning that there is no compile time as in other languages.  Without the compile time, Ruby programs lose many warnings that programmers rely on for safety however as long as you stick to the Ruby conventions, these pitfalls can be avoided.  It is an object oriented language as well.  Ruby follows the object oriented paradigm so closely that everything in Ruby in an object.  What this means is that all operations on objects are essentially method calls on objects.  In addition this gives Ruby objects the ability to ask about themsevles via reflection.  This is one of the keys to properly understanding Ruby.&lt;br /&gt;
&lt;br /&gt;
Ruby is a dynamically typed language meaning that the type of some things may not be determinable until run time.  All objects have types but variables do not have to have types associated with them.  It is possible to see a variable that is given the value of 1 (Ex. x = 1) and then later in the code the variable is then given a string value (Ex. x = 'Hello World').  The fact that Ruby is a dynamic language gives the developer immense power and can be used to leverage code modification at runtime which is referred to as [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming].  The idea of metaprogramming is so pervasive in the language that you can consider all programming in Ruby to be metaprogramming.&lt;br /&gt;
&lt;br /&gt;
For information on metaprogramming specifically applied to Ruby, please consult the [[References]] section.&lt;br /&gt;
&lt;br /&gt;
==Naming conventions and general syntax==&lt;br /&gt;
&lt;br /&gt;
Ruby makes use of two naming conventions that you might be familiar with from experience with other languages.  Upper camel case and snake case are used to help differentiate class names and methods/variables.  This helps someone who is reading Ruby code to know when you're referring to a class versus a method.  In addition to these general naming conventions Ruby also allows you to leverage the question mark and exclamation mark characters to help signify what the method is doing.  A question mark usually signifies a Boolean method where an exclamation mark signifies a dangerous method.   Constants are always defined with full capitol letters and are scoped to only the places where they're defined, for example to the defining class or method.&lt;br /&gt;
&lt;br /&gt;
'''Naming Convention Examples'''&lt;br /&gt;
* UpperCamelCase&amp;lt;br&amp;gt;Conventionally used to define a class.  Upper Cammel Case requires that the first letter of each word be capitolized.&amp;lt;br&amp;gt;Ex. class MyNewClass&lt;br /&gt;
* snake_case&amp;lt;br&amp;gt;Usually used to define methods or variables contains a snake character or underscore between words.&amp;lt;br&amp;gt;Ex. def learn_conventions&lt;br /&gt;
* def how_many_items?&amp;lt;br&amp;gt;The question mark added to the end of this method definition helps to signal the programmer who may be reading this code that this will return a Boolean or predicate value&lt;br /&gt;
* def save!&amp;lt;br&amp;gt;THe question mark added to the end of this method definition helps to signal the programmer that this method does something destructive or can not be reversed.&lt;br /&gt;
&lt;br /&gt;
When writing or learning about Ruby, you may hear the term &amp;quot;syntactic sugar&amp;quot;.  What this refers to is the parts of a &amp;quot;normal&amp;quot; declaration of code that may seem superfluous.  In Ruby, this superfluous code can be ignored and as long as the code still makes relative sense, the interpreter will pick up the code and continue processing.  This is a big deal because it helps Ruby code become more readable to someone who may not be familiar with programming and also makes the code flow better.  An example of this is when dealing with a new line in Ruby.  While the presence of a semicolon or the keyword end will always signal the end of a statement, a newline can be substituted in most cases.  This is similar to the flexibility that Java provides with single statement if and while loops.  The beginning and ending brace characters were not required because the Java compiler can skip over this.  While it is true that you can reduce the code you write to make the code more humanly readable, there are times when you will want to still include some of the optional syntax in more complex methods.  The point that Armando makes in the video lecture is that you want to be defensive with this, when in doubt add the optional syntax.&lt;br /&gt;
&lt;br /&gt;
'''Syntactic Sugar Examples'''&lt;br /&gt;
The sample code listed below is a factorial example written with normal Ruby conventions of removing unneeded syntax.  Notice that it is missing some of the elements that are common in other languages&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 def fact(n)&lt;br /&gt;
   if n == 0&lt;br /&gt;
     1&lt;br /&gt;
   else&lt;br /&gt;
     n * fact(n-1)&lt;br /&gt;
   end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objects==&lt;br /&gt;
Ruby is an OO language but unlike other such languages everything in Ruby is an object.  Anything created in Ruby can have messages passed to it or be referenced like an object at any time; whether or not this will do anything is determined by what is referenced.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
Strings in Ruby are treated very similarly to how they are treated in Java.  You can find their length, concatenate them, find sub-strings, and use regex expressions on them as well. Most of these features, save the last, are built right in to the string data type used.&lt;br /&gt;
&lt;br /&gt;
Symbols are special types in Ruby.  Essentially they are immutable strings (they cannot be changed) and their value is just themselves.  They begin with a colon and then a lowercase name, (e.g. :symbol is a symbol).  Although symbols are a special type of string, they are not actually strings.  A symbol and a string with the same name will not be equal to one another.  Symbols are used to denote something as being special, it specifies that the name used is not arbitrary and is one of a fixed set.&lt;br /&gt;
&lt;br /&gt;
-Arrays&lt;br /&gt;
&lt;br /&gt;
Hashes, also known as dictionaries, are like arrays that have key-&amp;gt;value pairs as their entries.  The values for each key does not have to be the same type as the key that references it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
http://tryruby.org/ - A helpful site that provides an interface to execute your ruby code&lt;br /&gt;
&lt;br /&gt;
http://en.wikibooks.org/wiki/Ruby_By_Examples - Wiki book that discusses Ruby and its' syntax&lt;br /&gt;
&lt;br /&gt;
http://rubyinstaller.org/ - Link to download Ruby&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Ruby_(programming_language)- Wikipedia page&lt;br /&gt;
&lt;br /&gt;
http://www.rubyist.net/~slagell/ruby/examples.html - Ruby Example Code&lt;br /&gt;
&lt;br /&gt;
http://sandbox.mc.edu/~bennet/ruby/code/index.html - More example code&lt;/div&gt;</summary>
		<author><name>Defranks</name></author>
	</entry>
</feed>