# data[].attributes.attachment_link.readable_text
Next: Chapter 1: The Interactive Shell

When I first played video games as a kid, I was hooked. But I didn't just want to play video games, I wanted to make them. I found a book like this one that taught me how to write my first programs and games. It was fun and easy. The first games I made were like the ones in this book. They weren't as fancy as the Nintendo games my parents bought for me, but they were games I had made myself.

Now, as an adult, I still have fun programming and I get paid for it. But even if you don't want to become a computer programmer, programming is a useful and fun skill to have. It trains your brain to think logically, make plans, and reconsider your ideas whenever you find mistakes in your code.

Many programming books for beginners fall into two categories. The first category includes books that don't teach programming so much as "game creation software" or languages that simplify so much that what is taught is no longer programming. The other category consists of books that teach programming like a mathematics textbook-all principles and concepts, with few real-life applications for the reader. This book takes a different approach and teaches you how to program by making video games. I show the source code for the games right up front and explain programming principles from the examples. This approach was the key for me when I was learning to program. The more I learned how other people's programs worked, the more ideas I had for my own programs.

All you'll need is a computer, some free software called the Python interpreter, and this book. Once you learn how to create the games in this book, you'll be able to develop games on your own.

Computers are incredible machines, and learning to program them isn't as hard as people think. A computer program is a bunch of instructions that the computer can understand, just like a storybook is a bunch of sentences that the reader can understand. To instruct a computer, you write a program in a language the computer understands. This book will teach you a programming language called Python. There are many other programming languages you can learn, like BASIC, Java, JavaScript, PHP, and C++.

When I was a kid, I learned BASIC, but newer programming languages like Python are even easier to learn. Python is also used by professional programmers in their work and when programming for fun. Plus it's totally free to install and use-you'll just need an internet connection to download it.

Because video games are nothing but computer programs, they are also made up of instructions. The games you'll create from this book seem simple compared to the games for Xbox, PlayStation, or Nintendo. These games don't have fancy graphics because they're meant to teach you coding basics. They're purposely simple so you can focus on learning to program. Games don't have to be complicated to be fun!

Programming isn't hard, but it is hard to find materials that teach you to do interesting things with programming. Other computer books go over many topics most new coders don't need. This book will teach you how to program your own games; you'll learn a useful skill and have fun games to show for it! This book is for:

* Complete beginners who want to teach themselves programming, even if they have no previous experience.

* Kids and teenagers who want to learn programming by creating games.

* Adults and teachers who wish to teach others programming.

* Anyone, young or old, who wants to learn how to program by learning a professional programming language.

In most of the chapters in this book, a single new game project is introduced and explained. A few of the chapters cover additional useful topics, like debugging. New programming concepts are explained as games make use of them, and the chapters are meant to be read in order. Here's a brief rundown of what you'll find in each chapter:

* Chapter 1: The Interactive Shell explains how Python's interactive shell can be used to experiment with code one line at a time.

* Chapter 2: Writing Programs covers how to write complete programs in Python's file editor.

* In Chapter 3: Guess the Number, you'll program the first game in the book, Guess the Number, which asks the player to guess a secret number and then provides hints as to whether the guess is too high or too low.

* In Chapter 4: A Joke-Telling Program, you'll write a simple program that tells the user several jokes.

* In Chapter 5: Dragon Realm, you'll program a guessing game in which the player must choose between two caves: one has a friendly dragon, and the other has a hungry dragon.

* Chapter 6: Using the Debugger covers how to use the debugger to fix problems in your code.

* Chapter 7: Designing Hangman with Flowcharts explains how flowcharts can be used to plan longer programs, such as the Hangman game.

* In Chapter 8: Writing the Hangman Code, you'll write the Hangman game, following the flowchart from Chapter 7.

* Chapter 9: Extending Hangman extends the Hangman game with new features by making use of Python's dictionary data type.

* In Chapter 10: Tic-Tac-Toe, you'll learn how to write a human-versus-computer Tic-Tac-Toe game that uses artificial intelligence.

* In Chapter 11: The Bagels Deduction Game, you'll learn how to make a deduction game called Bagels in which the player must guess secret numbers based on clues.

* Chapter 12: The Cartesian Coordinate System explains the Cartesian coordinate system, which you'll use in later games.

* In Chapter 13: Sonar Treasure Hunt, you'll learn how to write a treasure hunting game in which the player searches the ocean for lost treasure chests.

* In Chapter 14: Caesar Cipher, you'll create a simple encryption program that lets you write and decode secret messages.

* In Chapter 15: The Reversegam Game, you'll program an advanced human-versus-computer Reversi-type game that has a nearly unbeatable artificial intelligence opponent.

* Chapter 16: Reversegam AI Simulation expands on the Reversegam game in Chapter 15 to make multiple AIs that compete in computer-versus-computer games.

* Chapter 17: Creating Graphics introduces Python's pygame module and shows you how to use it to draw 2D graphics.

* Chapter 18: Animating Graphics shows you how to animate graphics with pygame.

* In Chapter 19: Collision Detection, you'll learn how to detect when objects collide with each other in 2D games.

* In Chapter 20: Using Sounds and Images, you'll improve your simple pygame games by adding sounds and images.

* Chapter 21: A Dodger Game with Sounds and Images combines the concepts in Chapters 17 to 20 to make an animated game called Dodger.

Most chapters in this book will begin with a sample run of the chapter's featured program. This sample run shows you what the program looks like when you run it. The parts the user types are shown in bold.

I recommend that you enter the code for each program into IDLE's file editor yourself rather than downloading or copying and pasting it. You'll remember more if you take the time to type the code.

When typing the source code from this book, do not type the line numbers at the start of each line. For example, if you saw the following line of code, you would not need to type the 9. on the left side, or the one space immediately following it:

9. number = random.randint(1, 20)

You'd enter only this:

number = random.randint(1, 20)

Those numbers are there just so this book can refer to specific lines in the program. They are not part of the actual program's source code.

Aside from the line numbers, enter the code exactly as it appears in this book. Notice that some of the lines of code are indented by four or eight (or more) spaces. The spaces at the beginning of the line change how Python interprets instructions, so they are very important to include.

Let's look at an example. The indented spaces here are marked with black circles (*) so you can see them.

while guesses < 10:
****if number == 42:
********print('Hello')

The first line is not indented, the second line is indented four spaces, and the third line is indented eight spaces. Although the examples in this book don't have black circles to mark the spaces, each character in IDLE is the same width, so you can count the number of spaces by counting the number of characters on the line above or below.

Some code instructions are too long to fit on one line in the book and will wrap around to the next line. But the line will fit on your computer screen, so type it all on one line without pressing ENTER. You can tell when a new instruction starts by looking at the line numbers on the left. This example has only two instructions:

1. print('This is the first instruction!xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxx')
2. print('This is the second instruction, not the third instruction.')

The first instruction wraps around to a second line on the page, but the second line does not have a line number, so you can see that it's still line 1 of the code.

You'll need to install software called the Python interpreter. The interpreter program understands the instructions you write in Python. I'll refer to the Python interpreter software as just Python from now on.

In this section, I'll show you how to download and install Python 3-specifically, Python 3.4-for Windows, OS X, or Ubuntu. There are newer versions of Python than 3.4, but the pygame module, which is used in Chapters 17 to 21, currently only supports up to 3.4.

It's important to know that there are some significant differences between Python 2 and Python 3. The programs in this book use Python 3, and you'll get errors if you try to run them with Python 2. This is so important, in fact, that I've added a cartoon penguin to remind you about it.

On Windows, download the Windows x86-64 MSI installer from https://www.python.org/downloads/release/python-344/ and then double-click it. You may have to enter the administrator password for your computer. Follow the instructions the installer displays on the screen to install Python, as listed here:

1. Select Install for All Users and then click Next.

2. Install to the C:\Python34 folder by clicking Next.

3. Click Next to skip the Customize Python section.

On OS X, download the Mac OS X 64-bit/32-bit installer from https://www.python.org/downloads/release/python-344/ and then double-click it. Follow the instructions the installer displays on the screen to install Python, as listed here:

1. If you get the warning "'Python.mpkg' can't be opened because it is from an unidentified developer," hold down CONTROL while right-clicking the Python.mpkg file and then select Open from the menu that appears. You may have to enter the administrator password for your computer.

2. Click Continue through the Welcome section and click Agree to accept the license.

3. Select Macintosh HD (or whatever your hard drive is named) and click Install.

If you're running Ubuntu, you can install Python from the Ubuntu Software Center by following these steps:

1. Open the Ubuntu Software Center.

2. Enter Python in the search box in the top-right corner of the window.

3. Select IDLE (Python 3.4 GUI 64 bit).

4. Click Install. You may have to enter the administrator password to complete the installation.

If the above steps do not work, you can find alternative Python 3.4 install instructions at https://www.nostarch.com/inventwithpython/.

IDLE stands for Interactive Deve Lopment E nvironment. IDLE is like a word processor for writing Python programs. Starting IDLE is different on each operating system:

* On Windows, click the Start menu in the lower-left corner of the screen, type IDLE , and select IDLE (Python GUI).

* On OS X, open Finder and click Applications. Double-click Python 3. x and then double-click the IDLE icon.

* On Ubuntu or other Linux distros, open a terminal window and enter idle3 . You may also be able to click Applications at the top of the screen. Then click Programming and IDLE 3.

The window that appears when you first run IDLE is the interactive shell, as shown in Figure 1. You can enter Python instructions into the interactive shell at the >>> prompt and Python will perform them. After the computer performs the instructions, a new >>> prompt will wait for your next instruction.

Figure 1: The IDLE program's interactive shell
You can find the source code files and other resources for this book at https://www.nostarch.com/inventwithpython/. If you want to ask programming questions related to this book, visit https://reddit.com/r/inventwithpython/, or you can email your programming questions to me at [email protected] .

Before you ask any questions, make sure you do the following:

* If you are typing out a program in this book but are getting an error, check for typos with the online diff tool at https://www.nostarch.com/inventwithpython#diff before asking your question. Copy and paste your code into the diff tool to find any differences between the book's code and yours.

* Search the web to see whether someone else has already asked (and answered) your question.

Keep in mind that the better you phrase your programming questions, the better others will be able to help you. When asking programming questions, do the following:

* Explain what you are trying to do when you get the error. This will let your helper know if you are on the wrong path entirely.

* Copy and paste the entire error message and your code.

* Provide your operating system and version.

* Explain what you've already tried to do to solve your problem. This tells people you've already put in some work to try to figure things out on your own.

* Be polite. Don't demand help or pressure your helpers to respond quickly.

Now that you know how to ask for help, you'll be learning to program your own computer games in no time!
Next: Chapter 1: The Interactive Shell

# data[].attributes.attachment_link.description
Next: Chapter 1: The Interactive Shell When I first played video games as a kid, I was hooked. But I didn't just want to play video games, I wanted to make them. I found a book like this one that taught me how to write my first programs and games.

# data[].attributes.attachment_link.description
By Al Sweigart. Over 500,000 copies sold. Free to read under a CC license.

# data[].attributes.headline
New CareerBuilder Survey Reveals How Much Smartphones Are Sapping Productivity at Work - CareerBuilder

# data[].attributes.subject
New CareerBuilder Survey Reveals How Much Smartphones Are Sapping Productivity at Work - CareerBuilder

# data[].attributes.attachment_link.readable_text
3 in 4 employers say two or more hours a day are lost in productivity because employees are distracted

Survey reveals this year's most common and unusual productivity killers

CHICAGO - June 9, 2016 - While technology helps workers stay connected while away from the office, in many cases it is causing them to disconnect while in the office, leading to a negative impact on productivity. According to new CareerBuilder research, 1 in 5 employers (19 percent) think workers are productive less than five hours a day. When looking for a culprit, more than half of employers (55 percent) say that workers' mobile phones/texting are to blame.

INFOGRAPHIC: http://cb.com/Productivitykillers

The national survey was conducted online by Harris Poll on behalf of CareerBuilder between February 10 and March 17, 2016, and included a representative sample of 2,186 hiring managers and human resource professionals and 3,031 full time, U.S. workers in the private sector across industries and company sizes.

More than 8 in 10 workers (83 percent) have smartphones, and 82 percent of those with smartphones keep them within eye contact at work. And while only 10 percent of those with smartphones say it's decreasing their productivity at work, 2 in 3 (66 percent) say they use it (at least) several times a day while working.

"While we need to be connected to devices for work, we're also a click away from alluring distractions from our personal lives like social media and various other apps," said Rosemary Haefner, chief human resources officer at CareerBuilder. "The connectivity conundrum isn't necessarily a bad thing, but it needs to be managed. Have an open dialogue with employees about tech distractions. Acknowledge their existence and discuss challenges/solutions to keeping productivity up."
Wasting Time at Work
When asked to name the biggest productivity killers in the workplace, employers cited cell phones/texting, followed by the Internet and workplace gossip:

Cell phone/texting: 55 percent

The Internet: 41 percent

Gossip: 39 percent

Social media: 37 percent

Co-workers dropping by: 27 percent

Smoke breaks or snack breaks: 27 percent

Email: 26 percent

Meetings: 24 percent

Noisy co-workers: 20 percent

Sitting in a cubicle: 9 percent

The majority of workers with smartphones (65 percent) do not have their work emails on their smartphones. Of those who access their smartphone during work for non-work use, they spend their time on these non-work related sites during work:

Personal messaging: 65 percent

Weather: 51 percent

News: 44 percent

Games: 24 percent

Shopping: 24 percent

Traffic: 12 percent

Gossip: 7 percent

Sales: 6 percent

Adult: 4 percent

Dating: 3 percent

The High Costs of Low Productivity
Three in four employers (75 percent) say two or more hours a day are lost in productivity because employees are distracted. Forty-three percent say at least three hours a day are lost. Productivity killers can lead to negative consequences for the organization, including:

Compromised quality of work: 48 percent

Lower morale because other workers have to pick up the slack: 38 percent

Negative impact on boss/employee relationship: 28 percent

Missed deadlines: 27 percent

Loss in revenue: 26 percent

Negative impact on client relationships: 20 percent

More than 3 in 4 employers (76 percent) have taken at least one step to mitigate productivity killers, such as blocking certain Internet sites (32 percent) and banning personal calls/cell phone use (26 percent). Other efforts to mitigate productivity killers include:

Schedule lunch and break times: 24 percent

Monitor emails and Internet usage: 19 percent

Limit meetings: 17 percent

Allow people to telecommute: 14 percent

Have an open space layout instead of cubicles: 14 percent

Restrict use of speakerphones if not in an office: 13 percent

Increase height of cubicle walls to make it easier to concentrate: 8 percent

The Craziest Non-Work Activities Workers Have Done On the Job
Employers were also asked to reveal the most unusual or most memorable things they have caught an employee doing when they should have been working. Some examples included:

1. Employee was working on a scrapbook.

2. Employee was decorating a cubicle with chains of paper clips.

3. Employee brought her equipment for her embroidery business from home and was making items for a craft show to sell.

4. Employee was doing doughnuts in the parking lot in the snow.

5. Employee brought in a kitten she found outside and tried to keep it quiet within a large purse.

6. Employee was working on her child's school project that included uncooked macaroni noodles.

7. Employee was laying on a patient's bed talking to the patient while the patient sat in her wheelchair

8. Employee was watching YouTube videos of people shoving marshmallows in their mouth.

9. Employee was doing some personal grooming in the break room.

10. Employee was searching on craigslist for dates.
Survey Methodology
This survey was conducted online within the U.S. by Harris Poll on behalf of CareerBuilder among 2,186 hiring and human resource managers and 3,031 workers ages 18 and over (employed full-time, not self-employed, non-government) between February 10 and March 17, 2016 (percentages for some questions are based on a subset, based on their responses to certain questions). With pure probability samples of 2,186 and 3,031, one could say with a 95 percent probability that the overall results have sampling errors of +/- 2.10 and +/- 1.78 percentage points, respectively. Sampling error for data from sub-samples is higher and varies.
About CareerBuilder®
As the global leader in human capital solutions, CareerBuilder specializes in cutting-edge HR software as a service to help companies with every step of the recruitment process from acquire to hire. CareerBuilder works with top employers across industries, providing job distribution, sourcing, workflow, CRM, data and analytics in one pre-hire platform. It also operates leading job sites around the world. Owned by TEGNA Inc. (NYSE:TGNA), Tribune Media (NYSE:TRCO) and The McClatchy Company (NYSE:MNI), CareerBuilder and its subsidiaries operate in the United States, Europe, South America, Canada and Asia. For more information, visit www.careerbuilder.com.
Media Contact
Ladan Nikravan
312.698.0538 x70538
ladan.nikravan@careerbuilder.com
http://www.twitter.com/CareerBuilderPR

CareerBuilder Media Contact
For all media inquiries and interview requests, contact:

Jennifer Grasz
(P) 773-527-1164
(E) jennifer.grasz@careerbuilder.com

# data[].attributes.attachment_link.title
New CareerBuilder Survey Reveals How Much Smartphones Are Sapping Productivity at Work

# data[].attributes.attachment_link.description
3 in 4 employers say two or more hours a day are lost in productivity because employees are distracted Survey reveals this year's most common and unusual productivity killers CHICAGO - June 9, 2016 - While technology helps workers stay connected while away from the office, in many cases it is causing them to disconnect while in the office, leading to a negative impact on productivity.

# data[].attributes.headline
The Pomodoro Technique® - proudly developed by Francesco Cirillo | Cirillo Consulting GmbH

# data[].attributes.subject
The Pomodoro Technique® - proudly developed by Francesco Cirillo | Cirillo Consulting GmbH

# data[].attributes.attachment_link.title
The Pomodoro® Technique | Cirillo Consulting GmbH

# data[].attributes.attachment_link.description
The Pomodoro® Technique is a time management method developed by Francesco Cirillo in the late 1980s. It is a structured method made up of processes, tools, principles and values to learn how to deal with time and turn it from a vicious predator to an ally to boost productivity. It is based on a ser…

# data[].attributes.headline
How to Use a Writing Cleanroom to Avoid Plagiarism - Plagiarism Today

# data[].attributes.subject
How to Use a Writing Cleanroom to Avoid Plagiarism - Plagiarism Today

# data[].attributes.attachment_link.readable_text
In the physical world, a cleanroom (or clean room) is a controlled space that strives to prevent outside contaminants from getting inside. They are commonly used in manufacturing and scientific research environments as a way to ensure that dust, microbes and other contaminants can't interfere with the work inside.

A writing cleanroom is very similar, it's a controlled writing space, usually a word processor, into which no outside contaminants, in this case uncited text, is allowed in.

It's a simple and effective way to avoid accidental plagiarism. While it may seem to be an obvious approach to writing, especially in academic environments, it's an approach that's used all-too-infrequently judging from the number of journalists, students and other writers who claim to have used text that they failed to rewrite.

The simple truth is that mingling original text with uncited copied text is extremely dangerous. Even if you have the best of intentions to rewrite or cite it later, those intentions can get lost as the project moves along, especially if poor time management and organization skills creep up.

Using a writing cleanroom isn't just the best way to avoid plagiarism, it's by far the easiest way to write. All one has to to do is remember one very basic rule.

The Basic Tenant of a Writing Cleanroom

The entire concept of a writing cleanroom can be summarized in one simple rule:

No unoriginal text should be pasted or otherwise enter into a work in progress without immediate citation being applied.

In short, the act of copying and pasting (or simply retyping) text into your work should be treated with extreme reverence. If the text is not yours, it needs to be cited immediately after pasting.

The reason for this is simple. Even if you intend to go back and rewrite a copied section or remove it altogether, time or memory might prevent that from happening. If it does, you are still ultimately responsible for that uncited text.

In short, by never mingling uncited text into your work, you avoid even the potential of committing verbatim plagiarism. While it's still possible to plagiarize facts and information, if you're citing as you go through, you're much less likely to do that as well.

While this process is simple enough, it's actually counter to how many write. While this approach is "write and cite", others take a "write first, cite later" approach. The problem with the latter is that citation is much more difficult after the fact and it's easy to forget what needs to be done.

How to Use a Writing Cleanroom

The approach to using a writing cleanroom is fairly simple and can be best summarized in these steps:

1. Never mix unoriginal and original text in the same document. Notes, pasteboards and other tools that might have unoriginal text should be stored elsewhere.

2. When pasting text into your work, decide first if it's text that needs to be copied. Would this information be better or equally-well presented as a paraphrase? If so, put it away and paraphrase the information instead. After you're done, be sure to cite the source of the information immediately.

3. If you decide copying the text is appropriate, do so but immediately put it in either quotes or block-quotes as appropriate and add other needed citations.

4. Be careful to not remove any citation marks through reformatting or editing of the document. This can be especially problematic if you use block-quotes but convert the document to a format that doesn't support it.

There are exceptions to this, of course. I routinely copy and paste in names to avoid misspelling them and the same is true for long numbers or anything else where a mistake is likely. However, those are short one to three word passages, not significant portions of text.

When dealing with actual language written by others, the basic principle is that you should never mingle your words with others without immediately adding citations. If that simple principle is followed, the chances of accidentally (or as I prefer to think of it, negligent) plagiarism drops to nearly zero.

The key is to make citation part of the writing process, not the editing process. Uncited text and information is something that should never be in your work in the first place, not something to be edited out later.

A Word on Paraphrasing

One of the most difficult things to explain when it comes to plagiarism is how to paraphrase. Many students, when trying to understand how to do it, ask questions like "How much of the original do I have to change?" or "What if I just rearrange the sentences?"

However, that's the wrong way to look at paraphrasing. Paraphrasing is not about changing the words someone else wrote, but rather, writing the information in your own words.

The easiest way to achieve this is to read the information you want to paraphrase and then put it away. Don't copy it and don't look at it. From there, just write the information in your words.

A great way to spot a bad paraphrase is if the paraphrased content reads differently than other text in the work. It should have the same voice and tone as the rest of the writing.

As for when to use a paraphrase versus a quote, quotes are best used when there's some reason for leaving the quote author's voice intact. There can be many reasons for this including that the original author has a first-person account that's important or their word choice was integral to the point.

However, if there's no reason to use the specific words the author said, it's likely best to paraphrase instead.

Bottom Line

The strange thing about this approach, to me at least, is that this is not only the easiest way to avoid plagiarism, but also the easiest way to write in general.

Going back and adding citations or rewriting text after the fact isn't just risky, its more difficult and requires far more work.

But more to the point, not thinking about citation as you are bringing in other people's writing isn't just setting yourself up for an accident, it's negligence. As I said in my previous post, getting to the point that you have uncited text in your work either requires malice or negligence, there's pretty much no other way.

So, while this article for many writers is a very basic one about how to incorporate the works of others in your writing, it's still a necessary one. Too many people, and not just students, either never learned or forgot these simple principles.

Hopefully, this article can do a little bit to educate on them and bring them to the forefront of writing.
Header Image by Rudolf Simon (M+W Group GmbH) [GFDL or CC BY 3.0], via Wikimedia Commons

# data[].attributes.attachment_link.title
How to Use a Writing Cleanroom to Avoid Plagiarism - Plagiarism Today

# data[].attributes.attachment_link.description
In the physical world, a cleanroom (or clean room) is a controlled space that strives to prevent outside contaminants from getting inside. They are commonly used in manufacturing and scientific research environments as a way to ensure that dust, microbes and other contaminants can't interfere with the work inside.

# data[].attributes.headline
Turnitin - Plagiarism and Programming: How to Code Without Plagiarizing

# data[].attributes.subject
Turnitin - Plagiarism and Programming: How to Code Without Plagiarizing

# data[].attributes.attachment_link.readable_text
In honor of National STEM Day, we are investigating plagiarism in the STEM subjects. In this post, guest blogger Jonathan Bailey examines the rise of plagiarism in computer science classes.
Programming classes are rapidly becoming among the most popular classes at universities. But, as more and more students are learning to code, an increasing number are finding themselves accused of plagiarism.

According to a recent New York Times article, at Brown University, more than half of the violations of the academic code involved cheating in computer science classes. Similarly, at Stanford, 20% of one computer science class were flagged for cheating.

Part of this is that programming, in many ways, is still a new form of creativity. While we have centuries of discussion surrounding plagiarism and the written word, programming has far less history as a means of communication and it doesn't have the citation standards that we do with research papers.

This can make a lot of the boundaries when it comes to plagiarism and programming seem ambiguous. This is an issue not just in the classroom, but also in the courtroom. This has been highlighted in the seven-plus year litigation between Google and Oracle over Google's use of Java APIs to make Java applications run on Android.

In that case, Google admitted to copying the "declaring code" so the apps would be compatible but did not copy the "implementation code" which determines how Android processes the instructions from those apps. Though representing only a very small percent of the code in Java, the copied APIs were enough to kick off both a huge lawsuit and a major legal debate.

However, in the classroom, there's only one judge to be concerned with and that is the instructor.

As such, when it comes to avoiding plagiarism in programming classes, the best first step is the same as in any other class: Listen to your instructor and ask questions when you are unsure of how to proceed.

Instructors are there to guide you and help you learn, part of that is with plagiarism and citation issues.

When working with your instructors, there are several issues to focus one:

1. What are the rules on using outside code? When, if ever, is it acceptable to bring in outside code? What sources can it be from? Many classes will allow outside code but only from approved sources, such as a classroom library or open source projects. Knowing when and where it's acceptable to use outside code is crucial to avoiding plagiarism.

2. What are the rules on collusion? A large number of programming plagiarism cases deal with collusion, with students in a class copying from one another. Understanding if, when and how students can help one another in the class is invaluable to avoiding cheating allegations.

3. How do you cite unoriginal code? When you do use code, either from another student or an outside source, how do you cite it?

Beyond that there are several other steps you can and should do to ensure that you do not face accusations of coding plagiarism.

1. Code in a Cleanroom: Writing in a cleanroom is a process through which you physically separate outside text from you own. You can and should take similar precautions with your code, never mingling outside code with your work unless you've properly cited it.

2. Comment Your Code Thoroughly: Every programming language as a means of inserting comments into code and thoroughly commenting code is a good practice every programmer should follow. However, it is doubly important when incorporating outside code into your work, as comments are a simple way to illustrate what is and is not original. It's also useful if your instructors have any question about whether you wrote the code as good comments can illustrate a thorough understanding of what was written.

3. Use Original Variable Names: When possible, ensure that your variable, class and other names are original. To be clear, simply changing variable names on copied code does NOT make it original, as pointed out by the University of Pennsylvania, but having unique and meaningful variable names not only makes coding easier for you, but also highlights that the work is yours.

With coding, the most important thing is to always do your work for yourself, unless specifically allowed and/or instructed to do otherwise. While learning to work with outside code is an important skill, programming assignments are meant to test your coding skill. That is impossible if you simply copy and paste the work of others.

If you do your work, cite what you do copy and don't work with other students without permission, you should be fine. In that regard, programming is very similar to any other assignment in college.
This post was contributed by Jonathan Bailey, foremost expert in plagiarism. He has spent over 16 years fighting plagiarism professionally and currently blogs on Plagiarism Today, where he raises awareness about the societal effects of plagiarism.

# data[].attributes.attachment_link.title
Turnitin - Plagiarism and Programming: How to Code Without Plagiarizing

# data[].attributes.attachment_link.description
In honor of National STEM Day, we are investigating plagiarism in the STEM subjects. In this post, guest blogger Jonathan Bailey examines the rise of plagiarism in computer science classes. Programming classes are rapidly becoming among the most popular classes at universities.

# data[].attributes.headline
Chapter 0 – Introduction | Automate the Boring Stuff with Python

# data[].attributes.subject
Chapter 0 – Introduction | Automate the Boring Stuff with Python

# data[].attributes.attachment_link.title
Chapter 0 - Introduction | Automate the Boring Stuff with Python

# data[].attributes.attachment_link.description
After a couple of hours, he had a short program that read a competitor's price from a file, found the product in the store's database, and noted whether the competitor was cheaper. He was still new to programming, and he spent most of his time looking up documentation in a programming book.

# data[].attributes.headline
What is a Class vs What is an Object in Programming? - YouTube

# data[].attributes.subject
What is a Class vs What is an Object in Programming? - YouTube

# data[].attributes.attachment_link.title
What is a Class vs What is an Object in Programming?

# data[].attributes.headline
Image Manipulation — The Hitchhiker's Guide to Python

# data[].attributes.subject
Image Manipulation — The Hitchhiker's Guide to Python

# data[].attributes.attachment_link.title
Image Manipulation - The Hitchhiker's Guide to Python

# data[].attributes.headline
Difference between Object and Class | Object vs Class

# data[].attributes.subject
Difference between Object and Class | Object vs Class

# data[].attributes.attachment_link.readable_text
Key difference: Class and Object are two most important concepts of an Object oriented programming language. The main difference between the two is that class is a blueprint which is used to create different objects of the same type.

Object Oriented Programming (OOP) is a very popular style of programming because of its ability to handle complex applications with more codes. Class and object are two terms that are commonly used in OOP languages. In its most basic form, objects are the instantiation of classes. This article differentiates between the two terms.

An object is defined as any entity that can be utilized by using commands in a programming language. An object can be a variable, value, data structure or a function. In OOP, an object is referred to as an instance of a class.

An object is an extension of abstract data type, with addition to polymorphism and inheritance. An object has state (data) and behavior (code). In programming, the key is that each object itself is responsible for carrying out tasks.

An object contains properties and methods which are needed to make a certain type of data useful. An object's properties are what it knows and its methods are what it can do. The methods provide functionality to applications and ensure that an object's data is being used properly. Methods also allow the actual execution of tasks to be hidden and to be standardized for particular operations for different types of objects. Methods are used to access the objects of a class. All the interaction is done through the object's methods. This is known as data encapsulation. The objects are also used for data or code hiding.

A class is a concept used in object oriented programming languages such as C++, PHP, and JAVA. It provides values for state (member variables) and implementations of behavior (member functions, methods) in programs.

A class is said to be a blueprint of an object. It is an extensible guide used for creating objects; it is a subroutine that creates an object. A class does not represent the object; it represents all the information and methods an object should have. One class can be used to instantiate multiple objects. It is considered to be an extended TYPE declaration. Below is a basic example:

class Sample

{

public static void main(String[] args)

{

String sampleText = "Hello world!";

System.out.println(sampleText);

}

}

The above class, named 'Sample', includes a single method named main. Within main, the variable sample text is defined as "Hello world!". The main method invokes the class system from Java's library, which contains the 'out.println' method. This method is used to print the sample text to the output text window.

Classes are a fundamental part of OOP. They allow variables and methods to be isolated in specific objects instead of being accessible by all the parts of a program. This encapsulation of data protects each class from changes in other parts of the program. By using classes, developers can create structured programs with source code that can easily modify the programs.

Comparison between Object and Class:

# data[].attributes.attachment_link.description
Key difference: Class and Object are two most important concepts of an Object oriented programming language. The main difference between the two is that class is a blueprint which is used to create different objects of the same type. Object Oriented Programming (OOP) is a very popular style of programming because of its ability to handle complex applications with more codes.

# data[].attributes.attachment_link.readable_text
What is a class diagram in UML?

The Unified Modeling Language can help you model various subsets of diagrams, one of the more popular types in UML is the class diagram. Popular among software engineers to document software architecture, class diagrams are a type of structure diagram because they describe what must be present in the system being modeled.

No matter your level of familiarity, class diagrams can be easy to understand and our UML software is designed to be simple and easy to use. As the foundation element of UML, class diagrams represents the core purposes of UML because they separate the design elements from the coding of the system. UML was set up as a standardized model to describe an object-oriented programming approach. Since classes are the building block of objects, class diagrams are the building blocks of UML. The various components in a class diagram can represent the classes that will actually be programmed, the main objects, or the interaction between class and object.

The class shape itself consists of a rectangle with three rows. The top row contains the name of the class, the middle row has the attributes of the class, and the bottom section expresses the methods or operations that the class may utilize. In a diagram, classes and subclasses are grouped together to show the static relationship between each object. The UML shape library in Lucidchart can help you create nearly any custom class diagram using our UML diagram tool.

Benefits of class diagrams

Class diagrams have a number of benefits for any organization. Try using them to:

Illustrate data models for information systems, no matter how simple or complex.

Better understand the general overview of the schematics of an application.

Visually express any specific needs of a system and disseminate that information throughout the business.

Create detailed charts that highlight any specific code needed to be programmed and implemented to the described structure.

Provide an implementation-independent description of types used in a system that are then later passed between its components.

Diagramming is quick and easy with Lucidchart. Start a free trial today to start creating and collaborating.
By signing up you agree to our terms & conditions.

Basic components of a class diagram

The standard class diagram is composed of three sections:

The upper section contains the name of the class - This section is always required whether you are talking about the classifier or an object.

The middle Section contains the attributes of the class - The attributes describe the variables that describe the qualities of the class. This is only required when describing a specific instance of a class.

The bottom section includes class operations (methods) - Displayed in list format, each operation takes up its own line. The operations describe how a class can interact with data.

Member Access Modifiers

All classes have different access levels depending on the access modifier (visibility). Here are the following access levels with their corresponding symbols:

Public (+)

Private (-)

Protected (#)

Package (~)

Derived (/)

Static (underlined)

Member Scopes

There are two scopes for members: classifiers and instances.

Classifiers are static members while instances are the specific instances of the class. If you are familiar with basic OO theory, this isn't anything groundbreaking.

Additional class diagram components

Depending on the context, classes in a class diagram can represent the main objects, interactions in the application, and classes to be programmed.To answer the question of "What is a class diagram in UML?", you should first understand its basic makeup.

Classes - a template for creating objects and implementing behavior in a system. In UML, a class represents an object or a set of objects that share a common structure and behavior. They're represented by a rectangle that includes rows of the class name, its attributes, and its operations. When drawing a class diagram on a class diagram, only the top row must be filled out-the others are optional if you'd like to provide more detail.

Name - the first row in a class shape.

Attributes - the second row in a class shape. Each attribute of the class is displayed on a separate line.

Methods - the third row in a class shape. Also known as operations, these are displayed in list format with each operation on its own line.

Signals - symbols that represent one-way, asynchronous communications between active objects.

Data types - classifiers that define data values. Data types can model both primitive types and enumerations.

Packages - this containing shape is designed to organize related classifiers in a diagram. It is symbolized with a large tabbed rectangle shape.

Interfaces - similar to a class, except that a class can have an instance of its type, and an interface must have at least one class to implement it.

Enumerations - representations of user-defined data types. An enumeration includes groups of identifiers that represent values of the enumeration.

Objects - instances of a class or classes. Objects can be added to a class diagram when representing either concrete or prototypical instances.

Artifacts - model elements that represent the concrete entities in a software system, such as documents, databases, executable files, software components, and so on.

Interactions

Interactions is a term used for the various relationships and links that can exist in class and object diagrams. Some of the most common interactions include:

For example, if we had the object vehicle, a child class Go-go mobile would inherit all the attributes (speed, numbers of passengers, fuel) and methods (go(), stop(), changeDirection()) of the parent class in addition to the specific attributes(modelType, # of doors, autoMaker) and methods of its own class (Radio(), windshieldWiper(), ac/heat()). Inheritance is shown in a class diagram by using a solid line with a closed, hollow arrow.

In the example above, the Go-go mobile class and RoadTrip class are interrelated. At one end of the line the Go-go mobile takes on the association of "assignedCar" with the multiplicity value of 0..1 which means that when the instance of RoadTrip exists, it can either have one instance of Go-go mobile associated with it or no Go-go mobiles associated with it. In this case, a separate Caravan class with a multiplicity value of 0..* is needed to demonstrate that a RoadTrip could have multiple instances of Go-go mobiles associated with it. Since one Go-go mobile instance could have multiple "getRoadTrip" associations-- in other words, one go-go mobile could go on multiple road trips--the multiplicity value is set to 0..*

As an example, on your road trip through Arizona, you might run across a speed trap where a speed cam records your driving activity, but you won't know about it until you get a notification in the mail. It isn't drawn in the image but in this case, the multiplicity value would be 0..* depending on how many times you drive by the speed cam.

Class diagram examples

Utilizing a class diagram to map out process flows is easy and can be especially useful. Consider the two examples below when it comes to creating class diagrams in UML.

Class diagram for a hotel management system

Hotel management systems need to reflect the relationships between a variety of hotel-related objects. These objects can be sorted into classes via a class diagram, which shows the relationships between each object in the system or application. Many factors of hotel management must be accounted for, including the guest info, staff responsibilities, and room occupancy. A class diagram can map them out and provide a useful overview of the system. Get started on a class diagram by clicking the template below.
Click here to use this template
Class diagram for an ATM system
Click here to use this template
ATMs are deceptively simple: there are many layers of security that a safe and effective ATM must pass through to prevent fraud and provide value for banking customers. The various human and inanimate parts of an ATM system are illustrated by this easy-to-read diagram-every class has its title, and the attributes are listed beneath. You can edit, save, and share this chart by opening the document and signing up for a free Lucidchart account.

How to make a class diagram

In Lucidchart, creating a class diagram from scratch is surprisingly simple.

1. Open a blank document or start with a template and enable the UML shape library.

2. Select the shape you want and drag out symbols from the toolbox to the canvas

3. Then model the process flow by drawing lines between shapes while adding text.

Dive deeper into this guide on how to draw a class diagram in UML for additional insight. It's easy to resize and style any element. You can even import SVG shapes and Visio files for a custom solution. If you'd like to learn more about UML, check out our What is UML tutorial.

# data[].attributes.attachment_link.description
The Ultimate Guide to Class Diagrams in UML - Includes an overview of class diagrams in UML, benefits for using them, their basic components, examples with templates, and more. Understand and learn how to make a class diagram with this guide. Sign up is free in Lucidchart!

# data[].attributes.headline
Golden balls! The WEIRDEST SPLIT OR STEAL Ever - YouTube

# data[].attributes.subject
Golden balls! The WEIRDEST SPLIT OR STEAL Ever - YouTube

# data[].attributes.attachment_link.title
Golden balls! The WEIRDEST SPLIT OR STEAL Ever

# data[].attributes.attachment_link.description
http://www.pokerstrategy.com/about/#uQ67QY - FREE $150 dollars, educational videos and coaching that starts you on your poker journey from the world's largest Poker School - Try poker without risking your own money, NO DEPOSIT needed. Check it out!

# data[].attributes.headline
15 and Hexadecimal - Numberphile - YouTube

# data[].attributes.subject
15 and Hexadecimal - Numberphile - YouTube

# data[].attributes.attachment_link.description
Why is "f" a number to people who work with computers? More links & stuff in full description below ↓↓↓ More about binary in our "Pac-Man" video at http://www.youtube.com/watch?v=umYvFdU54Po This video features James Clewett.

# data[].attributes.headline
The Digital Voice: Why do we use Hexadecimal?

# data[].attributes.subject
The Digital Voice: Why do we use Hexadecimal?

# data[].attributes.attachment_link.readable_text
Thanks to OSNews.com for pointing out this site aimed at teaching C. While the site is still too new and the number of articles there are too few in number to really indicate if the authors efforts are worthwhile, but I enjoyed reading the articles and I feel he is heading in the right direction. However, whenever I come across a programming tutorial, I always find one thing glaringly omitted when talking about hexadecimal numbers. So much time is spent on how to work with them, but very rarely does anyone ever say why. And I find that strange. Its almost like your just expected to accept it, without any real knowledge as to why your working with a number system that is not the same as the number system that was crammed down your throat almost all your life.

The main reason why we use hexadecimal numbers is because it is much easier to express binary number representations in hex than it is in any other base number system. Computers do not actually work in hex (don't laugh, beginning students do ask that question). Lets look at an example, using a byte. Bytes are typically 8 bits, and can store the values 0 - 255 (0000 0000 - 1111 1111 in binary). For people, expressing numbers in binary is not convenient. I am not going to turn around to my co-worker and tell him that my phone number is 101 101 101 001 010 001 010 for obvious reasons. Imaging having to try and work with that on a daily basis. So a more convenient expression is needed for the human side.

Since a byte is 8 bits, it makes sense to divide that up into two groups, the top 4 bits and the low 4 bits. Since 4 bits gives you the possible range from 0 - 15, a base 16 system is easier to work with, especially if you are only familiar with alphanumeric characters (I don't know of any languages have 255 letters in their alphabet, but I am naive and not worldly). It's easier to express a binary value to another person as "A" then it is to express it as "1010". This way I can simple use 2 hex values to represent a byte and have it work cleanly. This way if I am piss poor at math, I only need to memorize the multiplication tables up to 15. So if I have a hex value of CE, I can easily determine that 12 * 14 = 206 in decimal, and can easily write it out in binary as 1100 1110. Trying to convert from binary would require me to know what each place holder represents, and add all the values together (128 + 64 + 8 + 4 + 2 = 206). It's much easier to work with binary through hex than any other base system. Further reading available here.

Octal comes into a close second. In octal, you can represent, at most, 3 bits with a single octal digit. So its very easy to say 311 is 11 001 001. The problem with octal, as you can see, is that the 3rd octal digit can only goes as high as 3, so it does not represent a byte as cleanly as hex. Octal is used in Unix for permissions due to its 3-bit nature. If we take the three specific entitlements (read, write, execute) for a file, we find that it coincides very well with octal. That's why you see those really funky "chmod 744" commands, because they are octal representation of permissions, 111 100 100, or R-W-E, Read, Read for owner, group, world respectively (at least that is how it was explained to me). The leftmost bit represents the read flag, the middle one represents the write flag, and the rightmost flag represents execute. So if you wanted the permission for read-write, it would be 110, or 6. Read and execute would be 101 or 5.

Incidentally, there is such a thing as a binary coded decimal. Binary coded decimals are used more for our convenience than for the machines. I have seen BCD more often in electronic circuits using 7 segment displays, and various encoding methods used in PC's. In BCD, 4 bit patterns are used to represent one base 10 digit. Once the value 9 is represented, another 4 bits are allocated. To compare, the value 10 in straight binary is 1010, where as in BCD it is 0001 0000. Another example is in straight binary, 29 is represented as 0001 1101. In BCD it is 0010 1001.

# data[].attributes.attachment_link.description
Thanks to OSNews.com for pointing out this site aimed at teaching C. While the site is still too new and the number of articles there are too few in number to really indicate if the authors efforts are worthwhile, but I enjoyed reading the articles and I feel he is heading in the right direction.

# data[].attributes.attachment_link.description
Wit.ai makes it easy for developers to build applications and devices that you can talk or text to. Our vision is to empower developers with an open and extensible natural language platform. Wit.ai learns human language from every interaction, and leverages the community: what's learned is shared across developers.

# data[].attributes.headline
A Typical Sprint, Play-By-Play | Scrum.org

# data[].attributes.subject
A Typical Sprint, Play-By-Play | Scrum.org

# data[].attributes.attachment_link.readable_text
In this introductory-level article we look at the mechanics of a Sprint, and at how team members are expected to collaborate in order to produce a release-quality increment.
The first day: Sprint Planning

The whole team, including the Product Owner, meet on the first day of the Sprint and conduct a Sprint Planning session. This is the very first thing to happen as soon as the Sprint commences.

Preparation

Sprint Planning ought to be prepared for. The most important preparation is to ensure that the Product Backlog has been refined to an appropriate level of detail, with estimates and acceptance criteria (this is the purpose of Product Backlog Refinement). Next, the Product Owner should have ordered the work on the Product Backlog, and have a general idea of how to negotiate a valuable Sprint Goal with the team. The options for negotiating a Goal should also have been considered during Refinement, and reflected in backlog ordering. Also, the team should have an idea of their capacity for this Sprint, which is to say, how much work they believe they can take on. They may be able to use their experience with previous Sprints to help them ascertain the size of this budget.

First plan the value that will be delivered

Each Sprint should result in a valuable increment of completed work, fit and ready for immediate release. The Product Owner is wholly accountable for what "value" means, and ought to have ordered the Product Backlog in such a way that value can be maximized by the team, sprint-by-sprint. The first thing the team must do is therefore to plan which items from the Product Backlog should be worked on in this Sprint, so that the best value can be delivered by the end of it.

To do this, the team work with the Product Owner to select the most valuable items from the Product Backlog which fits their projected capacity for the Sprint. Bear in mind that each item on the Product Backlog ought to have been given an estimate by the team, so they will know roughly how much work is likely to be involved.

Be sure to agree a Sprint Goal

This selection of work should be cohesive, and not just a grouping of unrelated and disparate items. Remember that a Sprint is a time-boxed opportunity to achieve something significant. For example, by the end of the Sprint a coherent feature may have been delivered, or a significant risk will have been mitigated. The Sprint Goal is a simple expression of this purpose, of the overarching significance of the work selected, and the coherence behind the selection.

A good Sprint Goal will allow the team to demonstrate focus and commitment, and allow collaboration and the re-planning of work so it is met.

Next plan how the work will be done

A Sprint Backlog is more than just a selection of work with an end goal in mind. It is also a plan for how that goal will be achieved, and how the associated work will be performed. This can be done by identifying and ordering the technical tasks that are likely to be involved. In effect the Sprint Backlog is a plan for meeting the Sprint Goal, and a forecast of the work that will have to be done.

The Product Owner does not need to be present for this part of Sprint Planning, as it is up to the team to plan this forecast at a technical level. However, the Product Owner should be available, even if only remotely, to answer any questions the team may have, and to provide any clarification that may be needed about the scope of the work. If more than one release is expected during the Sprint, this should be agreed with the PO and accounted for in the Sprint Backlog.

By the end of Sprint Planning, a team should be confident that it has made a good forecast of the work that will be needed to meet the Sprint Goal. It will have captured that plan in the Sprint Backlog which the team wholly owns. The team should be able to begin implementing that plan immediately and with a clear understanding - such as a Sprint Burndown - of how much work remains at any given point.

Each day, every day

Once the team have planned their Sprint Backlog they can start work. If they have planned things out as tasks, they will collaborate with each other, as a team, to make sure that those tasks are completed. They'll be able to track their progress by using their task board and their Sprint Burndown of work remaining.

Each team member will be sure to keep the Scrum Task Board and the Sprint Burndown updated, so the information can be relied upon by others. An information radiator should always tell the truth.

Hold a Daily Scrum

Every working day, at the same time, the Development Team will meet and plan what they will do to bring them closer to the Sprint Goal. This meeting is called the Daily Scrum and it should never take more than 15 minutes.

Only Development Team members should participate, as the plan of work belongs entirely to them. It is a time-boxed opportunity to re-plan the Sprint Backlog as a result of new discoveries and lessons learned during the Sprint. The whole team should participate. Each team member should be able to account for:

What they did yesterday to help the team meet the Sprint Goal

What they intend to do today to help the team meet the Sprint Goal

Any impediments which are getting in their way

By the end of the Daily Scrum, the team should have a clear plan for the next 24 hours and an understanding of how they will need to collaborate in order to achieve it. They should also have a list of any impediments which require the Scrum Master's attention.

Refine the Product Backlog

In Scrum, Product Backlog Refinement is not a formal event but an ongoing activity - the process of adding detail, order, and estimates to Product Backlog Items such as User Stories. It's up to Scrum Teams themselves to decide how often to do this, although it's certainly a good idea for them to build refinement into their daily routine. Refinement shouldn't take more than 10% of a team's total time during a Sprint. For most teams, half an hour a day may be adequate although some may prefer to spend an hour or two a couple of times a week. The important thing is to make sure that the Product Backlog is refined in a timely manner so that Sprint Planning can occur without impediment. The whole team, including the Product Owner, should participate.

A refinement session typically begins with the Product Owner presenting the current Product Backlog to the team. The backlog may be held in a number of forms, such as an electronic Scrum Board or other collaboration tool, or it may simply be a spreadsheet. A projector or shared screen can be very useful.

The team start at the top of the Product Backlog and work their way downwards, refining each item in turn. They'll examine each one and discuss its scope, and the acceptance criteria that will be necessary for its completion. Each item will then be estimated using a technique such as Planning Poker. A large item may be broken down into smaller ones which capture greater detail. Epics may be decomposed into user stories, for example.

The team stop once the session's time-box runs out. They will recommence where they left off the next time, eventually starting at the top again so the backlog is kept up to date.

Always collaborate

In agile practice, team members never work in isolation - if they did, they wouldn't be a team. In fact, teamwork is so important that the role is Development Team rather than Developer.

This means that each Development Team member must collaborate with his or her peers throughout the day, as they are jointly responsible for the progress of work. Any problems or failures are jointly owned by the team, as well as their successes. Collaboration is not something which is restricted to events such as the Daily Scrum, but applies to everything the team does throughout each entire Sprint.

Examples of collaboration include:

Helping peers to complete work in progress before bringing in new work from a backlog

Pair programming, such as taking it in turns to use the keyboard and helping and checking each other's work

Peer review

Asking for help, and being keen to give it

Going to where the work is and helping, instead of waiting for work to be passed over to them

Making sure that all work does in fact meet the Definition of Done

Calling a Scrum in order to resolve problems which need the team's immediate attention

Raising impediments to the Scrum Master so they can be handled in a timely manner

Updating a Scrum Task board and burndown chart so that the information is up-to-date and can be relied on

Skill and knowledge sharing

The final day: Review and Retrospective

Hold a Sprint Review

If a team has collaborated efficiently, they'll have worked together to meet the Sprint Goal, managing any risks and adjusting their plans as necessary. They'll have demonstrated control throughout the Sprint through an even burndown of work remaining, where each member saw it as their personal responsibility to help complete work in progress. They'll have a valuable increment to demonstrate to the Product Owner and any invited stakeholders. A Review is something a team should look forward to.

It's also something a team must prepare for. Enough time must be allowed for a demonstration of the work which has been performed. Tasks may be planned on a Sprint Backlog for this purpose, to make sure that the Review does justice to the work done and the value which is now available. Also, if the Product Owner thinks it would be a good idea to invite stakeholders, then those invitations ought to have been sent. The review is an opportunity to celebrate the work which has been done and to showcase their accomplishments, so confidence is inspired and a continued investment in the team might be justified.

A Sprint Review is also an inspect-and-adapt opportunity. It's a good time for the Product Owner to explain how well the product is performing, to get feedback first-hand from any invited parties, and to draw any lessons which might be used to improve the Product Backlog further. If any work has not been completed, for whatever reason, then this will also be reviewed and re-estimated on the Product Backlog for possible planning into future sprints.

Then conduct a Sprint Retrospective

The Sprint Review looked at the Product and the value delivered, at the work which has been done, and honestly and candidly at any work which wasn't done, whatever the reason.
The next thing to do is to conduct a Sprint Retrospective. A Retrospective considers the process which the team is following. Are they working as effectively as they can? It's generally best to hold the Retrospective immediately after the Review, because the former can introduce ideas for consideration in the latter.

The whole Development Team, the Product Owner, and the Scrum Master must all attend the Retrospective, because everyone is jointly responsible for the success of the team's work. It's really important to have a free and open session which gets to the heart of any problems and identifies actions which will help to resolve them. A Retrospective may begin with the following declaration:
"Regardless of what we discover, we understand and truly believe that everyone did the best job they could, given what they knew at the time, their skills and abilities, the resources available, and the situation at hand."
In a "Retro", everyone has an equal voice. One approach, which the Scrum Master may facilitate, is to identify:

Things which went well

Things which didn't go so well

Ideas for improvement

Shout-outs for team members who did something exceptional

Establishing a time-line can help jog attendees' memories about significant events during the Sprint.

# data[].attributes.attachment_link.description
In this introductory-level article we look at the mechanics of a Sprint, and at how team members are expected to collaborate in order to produce a release-quality increment. The whole team, including the Product Owner, meet on the first day of the Sprint and conduct a Sprint Planning session.

# data[].attributes.headline
How to Make a Fidget Spinner App with Android App Inventor 2 - Full Tutorial - YouTube

# data[].attributes.subject
How to Make a Fidget Spinner App with Android App Inventor 2 - Full Tutorial - YouTube

# data[].attributes.attachment_link.title
How to Make a Fidget Spinner App with Android App Inventor 2 - Full Tutorial

# data[].attributes.attachment_link.description
How to Make a Fidget Spinner App for Android, using a free app builder called Appinventor2. It's actually easier than you think and once you have the basics sorted you can customize the fidget spinner app to make it your own. And if it turns out ok, you could even upload it to the Android App Store.

# data[].attributes.headline
AP Computer Science Principles: The Exam | AP Central – The College Board

# data[].attributes.subject
AP Computer Science Principles: The Exam | AP Central – The College Board

# data[].attributes.attachment_link.readable_text
Important Updates

Scoring Guidelines and Notes for the 2018 exam administration
We have revised the Scoring Guidelines and Notes for the 2018 exam administration to improve teachers' experience with instruction and student scoring. Note that the performance tasks have not changed. Access the revised AP CSP Scoring Guidelines and Notes.

Attend a Webinar: Revised AP CSP Scoring Guidelines
Attend a live webinar to learn about the changes to the AP CSP scoring guidelines - September 14 at 3:00 PM EST and at 6:00 PM EST. A link to the recorded event will post a few days after the live event for those who are not able to participate.

Register for the 3:00 PM EST webinar.

Register for the 6:00 PM EST webinar.

# data[].attributes.attachment_link.title
AP Computer Science Principles: The Exam | AP Central - The College Board

# data[].attributes.attachment_link.description
Important Updates Scoring Guidelines and Notes for the 2018 exam administration We have revised the Scoring Guidelines and Notes for the 2018 exam administration to improve teachers' experience with instruction and student scoring. Note that the performance tasks have not changed. Access the revised AP CSP Scoring Guidelines and Notes.

# data[].attributes.headline
Learn to build Android apps | Appinventor

# data[].attributes.subject
Learn to build Android apps | Appinventor

# data[].attributes.attachment_link.readable_text
AppInventor.org teaches you how to code with the MIT App Inventor visual coding tool. The site offers a course-in-a-box for teachers and self-directed students, including videos and a free book on App Inventor. AppInventor.org was created by Professor David Wolber and students at the University of San Francisco.

Our work is made possible by our friends at MIT App Inventor, found at appinventor.mit.edu. We are also excited about the launch of the new App Inventor Foundation at appinventorfoundation.org (more news on that soon!)

App Inventor is a visual, blocks language for building Android Apps.

Educational

App Inventor is being used in classrooms all over the world to broaden participation in computer science.

Easy

Coding is like plugging puzzle pieces together-- you can learn within hours.

Fun

Build games, social apps, quizzes, and other apps for you and your friends.

Learn how to build apps

Choose a course to start mastering App Inventor

Course In A Box

Videos, Quizzes, and more.

How do you?

Java Bridge

What's new on App Inventor Blog?

Checkout the latest App Inventor news.
Blog

AppInventor.org Partners

Appinventor.org is a product of the University of San Francisco's Democratize Computing Lab and is funded by the NSF and WM Keck foundation.

AppInventor.org partners with but is a separate entity from MIT App Inventor. Our focus is providing materials for learning and teaching App Inventor, work made possible only through the efforts of the MIT team in developing and maintaining the App Inventor site.

# data[].attributes.attachment_link.title
Learn to build Android apps | Appinventor

# data[].attributes.attachment_link.description
AppInventor.org teaches you how to code with the MIT App Inventor visual coding tool. The site offers a course-in-a-box for teachers and self-directed students, including videos and a free book on App Inventor. AppInventor.org was created by Professor David Wolber and students at the University of San Francisco.

# data[].attributes.attachment_link.title
Manage Your Team’s Projects From Anywhere | Trello

# data[].attributes.attachment_link.description
Make the impossible, possible with Trello. The ultimate teamwork project management tool. Start up a board in seconds, automate tedious tasks, and collaborate anywhere, even on mobile.

# data[].attributes.attachment_link.description
Roles of variables are a new concept that can be utilized in teaching programming to novices. Roles represent programming knowledge on a higher level than simple programming language knowledge. Role knowledge has traditionally been tacit but it can be made explicit and thus help students to understand the ways variables are used in programs. Roles can also be used in analyzing large-scale programs making roles a useful concept for experts, too.

# data[].attributes.attachment_link.description
The security system for this website has been triggered. Completing the challenge below proves you are a human and gives you temporary access.

# data[].attributes.headline
Engineering, Science and Math Career Guides and Web Resources

# data[].attributes.subject
Engineering, Science and Math Career Guides and Web Resources

# data[].attributes.attachment_link.title
Engineering, Science and Math Career Guides and Web Resources

# data[].attributes.attachment_link.description
What is engineering? How do I become and Engineer? The following links will help you explore Engineering, Science and Math career possibilities.

# data[].attributes.headline
Intro to Scrum in Under 10 Minutes - YouTube

# data[].attributes.subject
Intro to Scrum in Under 10 Minutes - YouTube

# data[].attributes.attachment_link.description
For Scrum software, visit: http://www.axosoft.com Scrum Overview Diagram:: http://www.scrumhub.com/ What is Agile Scrum? Learn Scrum in under 10 minutes in this video introduction to the Scrum software development methodology. By the end of this fast-paced video, you'll practically be a scrum master. You'll know about burn down charts, team roles, product backlogs, sprints, daily scrums and more.

# data[].attributes.headline
Product Details | National Geographic Learning

# data[].attributes.subject
Product Details | National Geographic Learning

# data[].attributes.headline
AP Computer Science Principles: The Exam | AP Central – The College Board

# data[].attributes.subject
AP Computer Science Principles: The Exam | AP Central – The College Board

# data[].attributes.attachment_link.readable_text
Important Updates

Scoring Guidelines and Notes for the 2018 exam administration
We have revised the Scoring Guidelines and Notes for the 2018 exam administration to improve teachers' experience with instruction and student scoring. Note that the performance tasks have not changed. Access the revised AP CSP Scoring Guidelines and Notes.

Attend a Webinar: Revised AP CSP Scoring Guidelines
Attend a live webinar to learn about the changes to the AP CSP scoring guidelines - September 14 at 3:00 PM EST and at 6:00 PM EST. A link to the recorded event will post a few days after the live event for those who are not able to participate.

Register for the 3:00 PM EST webinar.

Register for the 6:00 PM EST webinar.

# data[].attributes.attachment_link.title
AP Computer Science Principles: The Exam | AP Central - The College Board

# data[].attributes.attachment_link.description
Important Updates Scoring Guidelines and Notes for the 2018 exam administration We have revised the Scoring Guidelines and Notes for the 2018 exam administration to improve teachers' experience with instruction and student scoring. Note that the performance tasks have not changed. Access the revised AP CSP Scoring Guidelines and Notes.

# data[].attributes.attachment_link.readable_text
Home
Download
Help
Resources
Extensions
FAQ
NetLogo Publications
Contact Us
Donate

Models:
Library
Community
Modeling Commons

Beginners Interactive NetLogo Dictionary (BIND)
NetLogo Dictionary

User Manuals:
Web
Printable
Chinese
Czech
Farsi / Persian
Japanese
Spanish

NetLogo is a multi-agent programmable modeling environment. It is used by many hundreds of thousands of students, teachers, and researchers worldwide. It also powers HubNet participatory simulations. It is authored by Uri Wilensky and developed at the CCL. You can download it free of charge. You can also try it online through NetLogo Web.

Download NetLogo

Go to NetLogo Web

Getting Started with NetLogo

Are you new to NetLogo or programming in general? We have resources to help!

When you're ready to dive deeper into NetLogo programming, check out the full NetLogo manual. Of particular note are:

We also have mailing lists you can join to ask questions of other users and keep up to date with NetLogo.

NetLogo Models

NetLogo comes with a large library of sample models. Click on some examples below.

NetLogo News (via Twitter)

© 1999-2023 Uri Wilensky (details & terms of use)

# data[].attributes.attachment_link.description
Home Download Help Resources Extensions FAQ NetLogo Publications Contact Us Donate Models: Library Community Modeling Commons Beginners Interactive NetLogo Dictionary (BIND) NetLogo Dictionary User Manuals: Web Printable Chinese Czech Farsi / Persian Japanese Spanish NetLogo is a multi-agent programmable modeling environment. It is used by many hundreds of thousands of students, teachers, and researchers worldwide.

# data[].attributes.headline
Computer science | Computing | Khan Academy

# data[].attributes.subject
Computer science | Computing | Khan Academy

# data[].attributes.attachment_link.readable_text
If you're seeing this message, it means we're having trouble loading external resources on our website.

If you're behind a web filter, please make sure that the domains *.kastatic.org and *.kasandbox.org are unblocked.

# data[].attributes.attachment_link.title
Computer science theory | Computing | Khan Academy

# data[].attributes.attachment_link.description
Learn select topics from computer science - algorithms (how we solve common problems in computer science and measure the efficiency of our solutions), cryptography (how we protect secret information), and information theory (how we encode and compress information).

# data[].attributes.headline
AP Computer Science Principles | AP Central – The College Board

# data[].attributes.subject
AP Computer Science Principles | AP Central – The College Board

# data[].attributes.attachment_link.title
AP Computer Science Principles | AP Central - The College Board

# data[].attributes.attachment_link.description
Explore essential course resources for AP Computer Science Principles, and review teaching strategies, lesson plans, and other helpful course content.

# data[].attributes.headline
Computer Sim Teaches Itself To Walk Upright - YouTube

# data[].attributes.subject
Computer Sim Teaches Itself To Walk Upright - YouTube

# data[].attributes.attachment_link.title
Computer Sim Teaches Itself To Walk Upright

# data[].attributes.attachment_link.description
Computer Sim Teaches Itself To Walk Upright

# data[].attributes.headline
[HOW-TO] Install Google Play Store (Fire OS … | Amazon Fire

# data[].attributes.subject
[HOW-TO] Install Google Play Store (Fire OS … | Amazon Fire

# data[].attributes.attachment_link.readable_text
This's just a quick guide on how to get the Google Play Store installed on the latest Fire OS 5 for Amazon Fire tablets with no Root, PC or ADB required.

This should work on any Amazon Fire tablet released from 2014 onwards (4th Generation and above) that's running Fire OS 5.X.

Now simply download the 4 APK files below using the stock web browser, SILK and install them in that same order, then REBOOT your tablet and afterwards open up the Google Play Store and log in with your Google account:

1. Google Account Manager 5.1-1743759
http://www.apkmirror.com/apk/google-...-apk-download/

2. Google Services Framework 5.1-1743759
http://www.apkmirror.com/apk/google-...-apk-download/

3. Google Play Services 10.2.98 (230-146496160)
http://www.apkmirror.com/apk/google-...-apk-download/

4. Google Play Store 7.4.25.L-all [0] [PR] 145823605
http://www.apkmirror.com/apk/google-...-apk-download/

Over time the Google Play Store and Google Play Services apps will auto update themselves in the background.

Attached Thumbnails

# data[].attributes.attachment_link.keywords[]
[how-to] install google play store (fire os 5.x) (no root/pc/adb)

# data[].attributes.attachment_link.title
[HOW-TO] Install Google Play Store (Fire OS 5.X) (No Root/PC/ADB)

# data[].attributes.attachment_link.description
This's just a quick guide on how to get the Google Play Store installed on the latest Fire OS 5 for Amazon Fire tablets with no Root, PC or ADB required. This should work on any Amazon Fire tablet released from 2014 onwards (4th Generation and above) that's running Fire OS 5.X.

# data[].attributes.headline
Cloud9 - Your development environment, in the cloud

# data[].attributes.subject
Cloud9 - Your development environment, in the cloud

# data[].attributes.attachment_link.description
AWS Cloud9 is a cloud-based integrated development environment (IDE) that lets you write, run, and debug your code with just a browser.

# data[].attributes.attachment_link.readable_text
A huge THANK YOU to all the contributors who've helped with translating Lightbot!
All translations are provided by Lightbot fans!

Russian by Ishkildin Ruslan and Larisa Yaroslavski

French by François Lolom

Brazilian Portuguese by Rodrigo Real

Spanish by Paul Núñez Morilla

Slovenian by Gregor Anželj

Nogwegian by Torgeir Waterhouse

Romanian by Mihai Secașiu

Indonesian by Med Irzal

German by Pattrick Hüper

Polish by Marcina Nowaka

Danish by Dirk Bucka-Lassen

Croatian by Daniela Cvitanović

Greek by Youla Sigourou

Italian by Francesca Mazzoni

# data[].attributes.attachment_link.description
A huge THANK YOU to all the contributors who've helped with translating Lightbot! All translations are provided by Lightbot fans!

# data[].attributes.attachment_link.description
USGS Earthquake Hazards Program, responsible for monitoring, reporting, and researching earthquakes and earthquake hazards

# data[].attributes.attachment_link.description
Animated global statistics that everyone can understand

# data[].attributes.attachment_link.description
TeleGeography’s comprehensive and regularly updated interactive map of the world’s major submarine cable systems and landing stations.

# data[].attributes.headline
Arduino with Python LESSON 1: Introduction to using Python with Arduino - YouTube

# data[].attributes.subject
Arduino with Python LESSON 1: Introduction to using Python with Arduino - YouTube

# data[].attributes.attachment_link.title
Arduino with Python LESSON 1: Introduction to using Python with Arduino

# data[].attributes.attachment_link.description
This series of tutorials will take you through step-by-step instructions on how to do projects that combine the Arduino and Python programming language. This combination allows you to take your arduino projects to that next level.