If you're just starting out with a DSLR camera, you're probably pretty overwhelmed with all the different settings you have available. This cheat sheet from weblog Living In the Stills will help you keep it all straight.
We talked about a lot of these things in our Basics of Photography Night School, but when you're out and about and don't have time to flip through a full guide, this cheat sheet can give you a quick glance at what different aperture, shutter, ISO, and other settings will do. You still need to have a basic understanding of what certain terms mean—like exposure or depth of field—but you won't have to know off the top of your head which values correspond to which ends of the spectrum. Check out a larger version of the cheat sheet below, and hit the link to read more about it.
Today's the fun lesson, where we look at basics effects, color correction, and titles for your video editing projects. We're tackling all these topics in both Adobe Premiere Pro CS5 and Final Cut Pro, so come on in and we'll get started!
The lesson is in the video, and this is a long one. It was supposed to be a short one, but it's not. There's a lot of stuff to cover when it comes to all the different kinds of effects you can do and show them in both applications, so we're packing it in! Below you'll find notes for this lesson. They won't replace the lesson, but you can use them as a sort of cheat sheet to refer back to as you're trying things out in Final Cut or Premiere.
Motion Effects
Final Cut, Premiere, and most pro editing software come with basic motion effects you can apply to your footage. These are things like cropping, scaling, rotating, distorting, and more. Both Premiere and Final Cut have these settings in the viewer. To access them, just load up a clip you want to edit and click correct tab. In Final Cut it's called Motion. In Premiere it's called Effects Settings. Once there, you'll see your options and a small timeline to the right of them. From there you can apply any adjustments you want, but one neat thing you can do is also add key frames. Adding key frames will let you animate the video in very basic ways, such as make it get bigger or smaller, spin around, and more. You can't do anything really fancy here, but it's useful for many simple operations you'll need to perform when editing. For a demonstration on how this all works, see the video associated with this lesson.
Filter and Transition Effects
Full size
Filter effects allow you to manipulate your video in various ways and transition effects allow you to transition your video in various ways. The key difference is that filters apply to an entire video clip and a transition is a means of pleasantly transitioning between two different clips (something we've looked at in previous lessons more than once). Filters will let you do things like de-interlace interlaced video, crop the frame to a custom size and shape (this is known as a garbage matte) so you can, potentially, combine multiple video clips into one, and alter the image in different ways. Pretty much every video editing application comes with a huge array of filters and most of them are either useless or operations you'll perform only on rare occasions. The best thing you can do is play around with all of them to get a better grasp on what they do. Transitions work in similar ways, and cross dissolve is pretty much the only one you're going to use (with some exceptions here and there). To see a few demonstrations, check ou the video that's associated with this lesson.
Color Correction
Color correction is generally handled by filters, but because it's the filter you're going to use most often it deserves its own section. The built-in color correction filters that come with Final Cut and Premiere are not the best color correction filters you can get. Personally, I useMagic Bullet Colorista as an alternative. It's a giant step up, but it isn't cheap ($300, though I swear it was less than that when I bought it). Some editing software, like the higher end stuff made by AVID, does actually come with really great color correction. You should try what's built-in before you go out and buy something, although if you're using Final Cut Pro I'd look elsewhere (even if you turn to Color, the dedicated application for color correction in Final Cut Studio).
We're not going to take a deep dive into the intricacies of color correction here, but the basic principal you want to remember is that your goal is to use color to either white balance your footage or unbalance it to convey a feeling/emotion. White balancing is really simple. Open up your color corrector and look at your footage. If something looks off, you're going to see it. For example, if the background seems too cold you'll notice too much blue. If those blue areas are really dark, they're in the shadow. If they'e in the middle, they're in the midtones. If they're bright, they're in the highlights. Wherever they are, there's a color wheel in your 3-way color corrector that represents each tone (shadows, midtones, and highlights, generally from left to right in that order—but they should be labeled). Each wheel should have a dot in the middle of it that you can move anywhere on the color wheel. If you want to get rid of blues in the shadows, just locate blue on the color wheel and start moving the dot to the other side. You'll see the footage start to warm up. Stop before it gets unnatural warm, unless that's your goal. If you want to convey a feeling of warmth or heat, pick warm colors and use the color corrector to add more of them in the relevant tones (generally the midtones have the greatest impact because they're the most visible). While professional color correction is a nuanced art and is very difficult, basic color correction is pretty simple. If you'd like a demonstration of what you just read, check out the video associated with this lesson.
Titles
Titles are really easy to create in both Final Cut Pro and Premiere Pro CS5. In Final Cut, you go to your Viewer window and look for the little film strip icon with an "A" in it. It should be sitting in the bottom right corner, and you can see a demonstration in the video associated with this lesson. This will give you a nice drop down menu with lots of neat things you can generate, but we're just going to concentrate on titles. While there's a specific section for titles, if you select Boris and thenTitle 3D you'll get the titles plugin with the most options. Boris' Title 3D plugin isn't as robust as what you'll find in Adobe Premiere Pro CS5, but it is pretty capable. You can add various effects to your text and even animate it just like you would your footage (as described in the motion effects section).
Adobe Premiere Pro CS5 handles titles in a slightly different way. Adobe put a lot of thought into what they call the Title Designer and it's really great. They obviously think pretty highly of it because they've dedicated an entire menu to titles. Believe it or not, it's called the Title menu. If you want to create a new title, just go to the Title menu and choose the kind of title you want to create. Set it up how you want in the Title Designer and then close the window when you're done. You don't need to press OK or hit save because the Title Designer simply creates an asset in your file browser that you can drag onto the timeline.
For a demonstration of title creation in both applications, see the video associated with this lesson.
That's all for today! Join us tomorrow when we'll be talking about encoding and preparing your video for delivery.
You've mastered the basics of variables and made it half way through our course, but are you up to the challenge of arrays and logic statements? Of course you are. Let's get started!
These lessons work best with the video, which you can see above, but we're also providing text for reference below. Even if you do prefer to read, the videos will be more explicit and demonstrate how to do everything we're discussing. If the text seems a bit too complicated, be sure to watch the video.
This is where things get a bit more complicated. There's no need to be intimidated by what's to come, but just know you might hit a point of frustration because we're going to cover some of the more complex—but incredibly useful—stuff today. This is going to be the hardest (and longest) part of the beginner lesson, but you can do it. You just may need to rewind and practice a little bit more than with the previous two lessons.
First, we're going to learn about arrays. After that, we're going to take a look if statements and for loops, and also how to use those tools with your array.
Arrays
An array is a type of variable, but it's more like a box with a bunch of sections. Unlike the simple variables we've discussed before, arrays can contain more than one piece of data. Let's take a look at how an array can be defined and then we'll talk about what it all means.
var myArray = new Array("Lisa", "George", "Adam", "Paloma", "Jeffrey");
I've just created an array called myArray that contains five names. Each is separated by a comma and each name is in quotes because they're strings (if you forgot what a string is, refer back to lesson one). As you might have guessed, arrays are really useful for storing a bunch of similar data inside of one variable for easy access. It's kind of like a mini database. When you want to access an item in an array you do so by number.
myArray[0]
What's a Method?
A method is like a function, only it's attached to a type of variable. So instead of just calling it out in the open, likealert(), you call a method along with a variable. Array.join(), for example, will take the array that .join() was added to and turn it into a single string. Don't worry to much about functions and methods, though. We'll cover that stuff tomorrow.
The above would resolve to Lisa, because Lisa is the first name in the array. If you changed the 0 to a 1, it would resolve to Adam. If you put a number beyond the number of items currently in the array (like 12), you won't get anything at all.
That's basically how arrays work. Not too tough, right? There's a ton more that you can do with arrays (e.g. sorting, splicing, searching, etc.) but we're not going to get into all of that here. If you'd like to skip ahead a little bit and take a look at array methods in JavaScript, check this out. For now, though, that's all the information you really need.
For Loops
The for loop is going to be the most complicated thing we're going to deal with today, and we're looking at it before the if statement because we're going to use an if statement to modify its behavior. So what is a for loop exactly? Basically, a for loop runs a chunk of code a specified number of times and counts that number as it moves along. Imagine you're a number variable called i. (You can pretend that stands for I as in yourself, but it really stands for iterator.) As i, you need to run a mile and you're at the starting line of a quarter-mile track. To complete a mile, that means you have to run four laps around the track. Represented as a for statement, that might look something like this:
for (i=0; i<4; i++)
{
run();
}
Let's break this down. When you say for, you're telling the computer you're declaring a for statement. That should make sense. That's pretty much the same as saying var before declaring a variable. That's the easy part. The complicated part happens inside the parentheses. Let's look at each part individually.
i=0
When you use i</code in the for loop, it's a variable you have to declare. It's not just there for you to use. You could use any letter, or a sequence of letters. It doesn't really matter what you call this variable, but traditionallyi is the way to go. Because you're declaring it inside of the for loop, you can reuse it in another loop later. This variable is local to the for loop and won't conflict with stuff outside of it. What we're doing here is setting it to 0. You don't have to start at 0, but in this instance (and virtually every other situation where you'll use a for loop) it makes sense. We haven't run any laps yet, so we're starting at zero.
i<4
A for loop is designed to run a bunch of code until you tell it to stop. This middle portion tells the for loop how long to run. We only want to run a mile, which is four laps, so we're telling the for loop that so long as the variable i is less than 4, keep going. If we wanted to run two miles, we could change it to i<8.
i++
The last condition is very simple: increase i by 1 every time this loop completes. You can use ++ or — to increase or decrease (respectively) a number by 1 anywhere else in your code, too, but chances are you'll use it most with for loops. This part is very important because we're telling the for loop to stop running when i</code is no longer less than the number 4. Becausei starts at 0, we need to increment i by one each time the loops runs or it will run forever.
Inside the Curly Braces
The curly braces {} currently has run() in it, but in this example that's not a real function. Basically, you put whatever code you want to run inside the curly braces. They're just around to section off the specific code you want to run.
One More Time, Please!
Okay, let's just run through this one more time because it's sort of complicated (or, at least, it was for me the first time I learned it):
The for tells the computer that we're defining a for loop.
i=0 sets a variable called i equal to 0, which is our starting point.
i<4 tells the for loop to stop once i is no longer less than the number 4.
i++ tells the for loop to increment i by 1 after each time it finishes running the designated code.
All the designated code that the for loop is supposed to run needs to be placed inside the curly braces.
Let's Put It to Use
Okay, let's now make a for loop that loops through our array and alerts us of each name in the array. That code should look something like this:
for (i=0; i<5; i++)
{
alert(myArray[i]);
}
This real example should look very similar to the fake example we just dissected except for one thing: myArray[i]. Earlier we looked at how we can access the contents of an array by number, so myArray[0] will give us something different than myArray[1]. Because i is a number that changes as the for loop runs, each time the loop will access a different point in the array. This saves you the trouble of writing the code out five times.
Okay, but what if we don't know the length of the array? Right now we know there are five elements, but if you make a change we'll either be running the loop more than we need to or we won't be running it enough. What we want to do is to run the for loop until we've accessed the entire array. That requires one little alteration:
for (i=0; i<myArray.length; i++)
{
alert(myArray[i]);
}
To make life easier, JavaScript (and most languages that use arrays) have a property built in to all arrays you create. (Actually, there are a bunch of different properties but we're only going to look at this one right now). This property, called length, gives you the number of items in the array. So, instead of saying i<5 we'll just say i<myArray.length and the forloop will run until it's run out of items in the array.
Did you survive all that? If you did, that's mainly what you need to know about for loops. There are few more examples in the video up top, so be sure to check it out if you want to see a few other things you can do with them.
If Statements
If statements are probably the easiest type of logic statement to understand. They're powerful, too, so it can be easy to get addicted to them. Novice coders tend to cling to if statements because it seems that if you have enough of them, you can do just about anything. That is true, if you don't mind losing your mind in the process. You can write some fairly complex code that operates on if statements, but you'd need a lot of them and it will drive you crazy. So, although you're probably going to love them, don't overuse them. Too many ifs do not make for efficient, good code.
So what is an if statement? It's basically a statement that says if the specified condition is true, then run this block of code. It can also be used to say, if the first condition isn't met, do this instead. You can also check if an alternate condition is met if the first one fails. For example, if you wan to wash your dog if your dog is blue, you can use an if statement to find out and wash the dog if it turns out to be blue. Here's how that could look as a piece of code:
if (myDog == "blue")
{
washDog();
}
Like we've seen before, iftells the computer that we're declaring an if statement. In parentheses, we're defining the condition. You'll see we have a variable called myDog, which presumably contains a simple piece of information: the color of your dog represented as a string. It could be "red" or "green" or "blue", but we don't know yet. To find out, we're going to ask if myDog is equal to "blue" to find out if it's actually blue. To test for equality, we use ==. If you use a single = then you are setting the value of a variable. If you use two == then you're testing to see if one variable is equal to another, or just equal to some kind of data. If the dog turns out to be blue (meaning if the condition is met and myDog is equal to "blue"), then the if statement will allow the code in curly braces {} to be run. In this example, the code inside the curly braces is washDog();. While washDog() is not a real function (not yet, anyway), if it were it would presumably go forth and wash the blue out of your dog.
Okay, so how can we apply this in our code? Well, the video will walk you through a more complex example but we're just going to test for someone's name. Let's say you included my name (Adam) in the array and you wanted to receive an alert only if my name comes up. Well, we can can combine your for loop and your if statement to do just that:
for (i=0; i<myArray.length; i++)
{
if (myArray[i] == "Adam")
{
alert("I found " + myArray[i] + " in the array!");
}
}
Basically, we've just put an if statement inside of the for loop, and our if statement is now asking if any position in the array is equal to Adam rather than asking if a simple variable, like myDog, is equal to "blue".
Got all of that? Good! If you made it through this lesson it'll be smooth-sailing tomorrow. In our sort-of last and final beginner lesson (there will be an "epilogue" and recap on Friday), we'll learn about functions and make a little game. See you tomorrow!
Want to learn how to code but don't know where to start? We've got you covered. We'll be teaching you the basics all week, and here's your first lesson.
Previously we've provided you with some resources for learning to code and given you a broad overview of the process, but now it's time to get down to business: We're offering a short 101 course, step by step. You can't learn to code overnight (or in a week), but we've broken up the basics into a few lessons that will be released as the first four parts in our brand new Lifehacker Night School series. Each lesson will be video-based (as you can see above), but we'll also provide you with text notes and files that you can refer to as well. Each lesson is designed to be a manageable chunk of information that you can digest in under 15 minutes (and often much less). Although we're starting off our first programming lesson at 9:00 AM PST, the following three lessons will be released every day at 6:00 PM PST. Be sure to come back and visit us at the end of the day on Tuesday, Wednesday, and Thursday this week to finish learning the basics.
Our first lesson is going to be very simple and consist of learning about basic variables and data types. For the lessons in this series, we're going to use JavaScript as a model because it's a syntax that's pretty easy to understand and it's something that anyone with a text editor and a web browser can use. Because it's an ECMA-based language, it makes understanding other ECMA-based languages (like ActionScript) much easier to learn. Even better, you'll find that knowing how to write JavaScript will make the transition to other object-oriented programming languages much easier. Basically, JavaScript is readily available to practically anyone with a computer and a browser, so we think it's a really good starting point. Once you have the basics down it should be easy to begin learning other languages.
Let's get started!
What Are Variables?
You can think of variables as labeled jars that store different types of data. While there are several kinds of variables, today we're only going to look at three:
String - A string variable is a string of alphanumeric characters and allowed symbols that are contained within quotation marks. For example, "Hello world, I'm 102 years old today!" is an example of a string. Strings can also be contained within single quotes, which is useful if you want to have a string with a quotation like this: '"I hate the snow," Laurel said.' Strings are basically used for storing text.
Number - A number variable couldn't be more straightforward because all number variables store are numbers. You don't store them within quotes like strings. Instead, numbers can just be written as they are. If you want to store the number 9 in a variable, you just write 9.
Boolean - A boolean variable is one of two things: true or false. This data type is kind of like an on and off switch, so you can ask true or false questions in your code. For example, you might ask "is the video currently playing?" The response you'd get would be a boolean variable. True would mean the video is currently playing and falsewould mean it is not.
So how do you putt a variable to your code (or declare a variable, as it's more traditionally called)? In JavaScript, all you need to do is this:
myVariable = "Hello world!";
To Var or Not to Var
In JavaScript, you can define a variable as myVariable = "something";or var myVariable = "something";, the difference being the word var preceding the statement. When you're declaring variables in a script outside of a function, this distinction is pretty much irrelevant. When you're declaring a variable inside a function and do not use var this creates a global variable. Global variables can be accessed from anywhere in your code, whereas local variables (such as the ones defined in functions) can only be accessed within their own scope (e.g. if a variable is local to a function, only that function can use it). This is not an important distinction right this minute, but when we learn about functions later it'll be good to know.
There are a few of things to notice here. First, the name myVariable. All programming languages have something called reserved words, which means you can't use them as variable names. What they varies, but if the name is sufficiently generic, there's a chance it could be a reserved word. To avoid using reserved words and screwing up your code, just decide on a naming scheme for your variables. I've put "my" in front of my example variable, but you'll probably want to come up with something else. Second, you'll notice a semicolon at the end of the line. A semicolon is like a period at the end of a sentence in many programming languages, and that is definitely the case in JavaScript. In nearly every situation, you need to end your code sentences with a semicolon so your computer doesn't get confused when reading it. The semicolon tells the computer, "Okay I'm all done with this statement." (Note: JavaScript is forgiving, and sometimes you can get away without the semicolon, but it's good practice.)
One more thing to note is that JavaScript is a loosely-typed language. There are (basically) two kinds of languages: loosely-typed and strictly-typed. An example of a strictly-typed language is ActionScript (the language Flash apps are written in), and the same variable declaration we just wrote would look like this in ActionScript 3:
var myVariable:String = "Hello world!";
The additions you're seeing are the word var and the word String (with a colon in front of it). The word var tells the computer we're about to declare a variable. The :String attached to the variable's name tells the computer what type of variable it is and to not accept any other type. This is the reason for the term strictly-typed. A loosely-typed language like JavaScript is more flexible and doesn't require any of that. This makes your code more flexible, but some will argue it will also make it more error-prone. We're not going to get into the pros and cons of strictly- and loosely-typed languages here, but it's good to be aware of the basic differences now as you will most likely encounter them in your programming endeavors.
Now that you understand what variables are and how they work, we can try using them in some actual JavaScript code.
Creating Variables and Using the JavaScript Alert() Function
Let's create a simple HTML document that we can use to test our variables:
(Right click this link and choose to save the document to download a copy of this skeleton HTML file.)
You're going to want to have a better-defined HTML document when you're actually writing code, but for our purposes this will work just fine. Save the code above as a file called myscript.html (or anything you want that ends in .html and doesn't contain spaces or special characters) and open it up in your web browser. You'll see absolutely nothing other than "My Script" in the title bar. We still have more work to do. First, let's declare a variable inside of the script tag:
myVariable = 5;
Here we've just declared a number. Let's look at other variable types we can declare
You'll notice I've added the line alert(myString);. This calls a built-in JavaScript function (we'll learn more about these later) called alert() which creates a pop-up dialogue box for users to interact with.
What is "Hello world!" all about?
Writing a simple program that says "Hello world!" is generally the first thing every programmer does when they're learning how to code. It's not necessary, but it's sort of a tradition and an initiation into the club.
You never really want to use these in practice because—as any internet user likely knows—alert boxes are very annoying, but they make for a good way to test your code, to make sure it works, while you're writing. The parenthesis following alert allow you to provide alert with data it might need. Not all functions will require that you give it information, but alert needs to know what to alert the user. In this case, we gave it myString, so the user will receive a popup notification that says "Hello world!" Try this with your other variables to get popups with a number and a boolean value.
Why give alert() a variable and and not just give it the contents of the variable? Well, if you said alert("Hello world!") you'd get the same result in this example, but variables are called variables because they vary. The idea is that the contents, or values, of these variables will change as users interact with the programs you write. In our next lesson, we'll be looking at working with variables and the neat things they can do. Tune in tomorrow at 6:00 PM PST for the next installment.
A student in an augmented environments lab at Georgia Tech stands over a three-story pit, which in reality is a green screen transformed by the head-mounted display she is wearing. This is part of an experiment that measures fear of heights.
Computer programmers have sometimes been called nerdy, geeky and brainy. The industry has a new reputation, though. It has become cool.
More than 250 colleges and universities offer gaming degrees, and many of these programs involve more than just video games. At the Georgia Institute of Technology in Atlanta, for example, there is one that combines engineering, computer science, art and media.
Beyond Entertainment
The augmented environments lab at Georgia Tech is bustling. Blair MacIntyre runs the lab and shows off some of the experiments. In one corner there's a room surrounded by wooden planks, and a green screen covers the floor.
This experiment is designed to measure a person's response to a fear of heights and learn from it.
"It really is the kind of combination of the kind of graphics you would see in a movie or video game," McIntyre says. "But because you are in the world, it really feels more real."
Gaming is the biggest force driving this technology. But MacIntyre says many others use it including the U.S. military and people in the medical field.
There are also practical, everyday uses for this type of technology. MacIntyre gives the example of an application that could, when installed on an iPhone, show a car owner if there was something wrong with her vehicle. "You look at your engine through your phone and figure out some basic repairs," MacIntyre says.
Across the Georgia Tech campus, students learn how to design and program based on one of the first major gaming systems — the Atari. Ian Bogost, a professor of digital media, gives students a background in gaming and knows they will use the technology to solve all kinds of real-world problems.
"We can apply them to journalistic pursuits, corporate learning," Bogost says. "We can apply them to social action, social justice. So when we look at games, and when we teach about games, it's not just about the entertainment industry. Although that's one aspect, it's really about the future of media much more broadly."
A Growing Industry
Even with a sagging economy, colleges and universities across the country have added gaming programs in the hopes of attracting students.
Richard Shemaka started out as mechanical engineer but found gaming more creative and, he hopes, more profitable.
"As a mechanical engineer, I was all about slide rules and multiplication tables," Shemaka says. "As soon as I got into computing, I just fell in love with it. I really love the logic behind it. I love just the sort of building-something-out -of-nothing sense that you get from it."
Emily Cribb is also a senior and one of a few women in this program.
"Everyone's going to need their escape," she says. "Everyone's going to need their muse, and games provide an excellent source of that. And I want to be in there helping people feel inspired and, thus, being inspired in turn."
The majority of undergraduate gaming programs have been developed in the past few years. Some people worry the industry will become saturated.
But Joseph Olin, with the Academy of Interactive Arts and Sciences, says there are no signs the appetite for gaming is waning.
"I don't believe consumer interest in interactive entertainment is going to abate," he says. "If anything, it seems to be increasing each year."
While universities figure out which courses to offer, most suggest there are still plenty of opportunities for creative students to find jobs with major companies or to make their own way in business, Web design or as independent game developers.
This is for the mothers since im always trying to find stuff that my nephews can do on the internet besides blow up and kill things here's a few places you can let them run wild on while online. 1: http://www.factmonster.com/ great interactive source for school age kids, with an atlas, almanac,encyclopedia and dictionary. 2: http://coolmath4kids.com/ Interactive math games and brain twisters for kids of all ages. 3: http://freerice.com/ (my fav) kids take quizzes to improve vocabulary,math and other learning skills and 10 grains of rice are donated to help world hunger. 4: http://www.funbrain.com/ Colorful arcade type games for kids up to grade 8. 5: http://funology.com/ tons of fun stuff for school age kids to do on this one 6: http://www.jumpstart.com/ this site teaches math, reading and critical thinking skills. 7: http://kidsdraw.com/ (my fav) kids from 5-10 will learn to draw everything from baby animals to their favorite fantasy characters. 8: http://www.kidzui.com/ (my fav) An internet browser for kids, with games, learning and tons of other stuff to keep the kids busy for many hours.
BoingBoing reports that a recent case filing in Robbins vs. Lower Merion School District, a Pennsylvania school, is a class action suit on behalf of students with school-issued laptops whose webcams have been used to watch the students and their families at home.
It was discovered that the laptops issued by the high school contained software allowing administrators to covertly activate the on-board webcam. The plaintiff, Blake J. Robbins, was disciplined by the school for “improper behavior in his home.” The evidence of said impropriety was brought forth by the school vice principal, who displayed a photo of Robbins taken by the laptop’s webcam.
According to the filings in Blake J Robbins v Lower Merion School District (PA) et al, the laptops issued to high-school students in the well-heeled Philly suburb have webcams that can be covertly activated by the schools' administrators, who have used this facility to spy on students and even their families. The issue came to light when the Robbins's child was disciplined for "improper behavior in his home" and the Vice Principal used a photo taken by the webcam as evidence. The suit is a class action, brought on behalf of all students issued with these machines.
If true, these allegations are about as creepy as they come. I don't know about you, but I often have the laptop in the room while I'm getting dressed, having private discussions with my family, and so on. The idea that a school district would not only spy on its students' clickstreams and emails (bad enough), but also use these machines as AV bugs is purely horrifying.
Schools are in an absolute panic about kids divulging too much online, worried about pedos and marketers and embarrassing photos that will haunt you when you run for office or apply for a job in 10 years. They tell kids to treat their personal details as though they were precious.
your privacy is worthless and you shouldn't try to protect it.
Update: The school district admits that student laptops were shipped with software for covertly activating their webcams, but denies wrongdoing.