text:
Talk:AP Computer Science

The First Section of Talk
I am willing to help a bit on this book. But you just gotta double-check the things I write :) --Dragontamer 03:39, 22 November 2005 (UTC)

 * In general, I hate to "write for the test", but in this particular case I would like to know what the specific curriculum requirements are for an AP Computer Science course. If you (or somebody else) can help dig these up, it would go quite a bit further to try and put something like this together.  I've had my own thoughts on the subject about what a high school AP class on Computer Science ought to have in it, but the testing requirments for the AP exam would also require a certain "standarization" of what should be taught as well.

 * In addition to the specific requirements of the AP exam, it should also be something like a CS 101 class, or more like a CS 150 (intro to Computer Science for CS major freshmen... the 101 class is usually abused as a general-education "Here is a computer" class). This is something I would be not only willing to fact check, but add content to as well.  --Rob Horning 13:03, 25 November 2005 (UTC)

Good Idea.

Here is the PDF file for the syllabus http://www.collegeboard.com/student/testing/ap/sub_compscia.html?compscia

Quite Frankly, when I took this exam I learned totally from researching online and checking the syllabus to see what I needed to learn. School System sucks... my class was 2 classes at once, one for CompSci A and the other was CompSci AB... basically, the teacher taught enough for the CompSci A students but I was planning on AB so he just gave me the syllabus and some online material to teach myself. IMO, too much to expect a teacher to teach 2 classes in 1 period o.O. Anyway, it is possible to learn without a book on this subject; but it probably would have been a great help if I had one :)

I suggest taking the outline directly from the syllabus, and appending the AB section to the end of chapters. --Dragontamer 07:07, 26 November 2005 (UTC)

 * I took a look at the PDF file. I forgot that AP Computer Science uses Java.  Yuck.  I think Java stinks as an introductory language, and encourages sloppy programming styles that would have to be later unlearned in the work environment.  Java has its strong points, but it is not a teaching language.  Still, if it the "language of choice" on the AP exam I guess it is going to have to be used.  Once you learn one programming langauge the others are fairly easy to pick up as well, although if I were the one to design the cirriculum I would perhaps encourage some time to explore other programming languages as well like LISP or LOGO (to name a language designed to be an introductory learning langauge).  BASIC is a better language environment, but is unfortunately too non-standard in all of its current dialects to be useful.  C# is a better compromise for an introductory langauge, but I can see the political motivations behind not using it as well.

 * Enough of my own opinions on the choice of language. We need now to establish an outline for the textbook and to try and come up with a chapter structure for this book.  Another issue to debate is the tone of the book and the "point of view" from a literary sense.  One of the best "textbooks" on computer science I ever read was written from a 1st person point of view, where the author talked to you like a casual chat but going over the course in a step-by-step fashion with plenty of examples.  This is surprisingly very difficult to accomplish, which is why it isn't often done.  I also think that a de-emphasis of the language features should occur with a stronger emphasis on programming concepts instead.

 * I also think that GUI design should be introduced very early, perhaps even from the start. This requires a strong well written GUI-IDE, and in this case it should also be "free" as in GPL'd if possible that we are working from.  Here is the reasoning for this approach:  Almost all programming done today is through using graphical interfaces.  It is a very rare programmer that in the Real Worldtm actually writes a command-line interface program.  A good IDE makes writing the traditional "Hello World" applet as a GUI application just as easy (or even easier than) writing the same program as a command-line application, at least for a beginner.  All of the current students are familiar with GUI programs anyway, so why not simply let them be creative and let them experiment with check boxes, lists, buttons, and graphical images and logos.  Working from a command line is an alien experience and something that they are not going to be used to using at all.  Generally speaking the command-line first approach is used because the author of the books that cover it don't understand GUI programming and are old-school programmers who hate modern IDEs.  All of this is of course my opinion and you can have any other opinion on the matter as well.

 * I also think that the typical examples are incredibly lame. Using the "traditional" object called "point" is something that needs to be thrown out completely.  These are kids we are talking about, not some engineer who is building an embedded system for a trans-continental pipeline.  Use examples that at least somewhat relate to current teen culture, or at least teen geek culture.  Yes, they may be on the AP exam, and we need to throw some lame stuff there as well just to not throw them for a loop when the exam takes place, but let's keep it exciting and something the kids can associate with as well.

 * These are some initial thoughts. I'll add more later.  --Rob Horning 18:32, 26 November 2005 (UTC)

 * Slightly off topic: Was that book from 1st person perspective C++: A Dialog ? Yeah, that was an awesome book.

 * I agree, we need some serious examples of polymorphism... not the good old animal tree where Dog is Mamal is vertabrate is blah blah blah... Heck, I'd consider that bad programming right there. (IMO, long inheritance chains are poor programming practice... granted, "long" is ambiguous definition but whatever). Additionally, I see many beginners make the giant mistake of using classes for everything. (There was this one case where my friend attempted to create a different class for every single "Magic the Gathering" card). I feel that bad examples should complement the good examples; every good example should have a bad example next to it.

 * A good example of inheritance I found is from playing video games. Class Gun, subclass AK47... Provide examples where you can pickup any kind of gun, and you can only hold 2 "guns" at a time. Etc. Etc. My friends seem to understand video games much more, and it would be more interesting to have a book aimed at creating a very basic video game than it is for a classic CS book. Several books that I liked involved creating a program slowly with the knowledge you build up... I'd prefer that perspective over a Dialog Perspective.

 * Additionally, I say we explain the algorithms with pictures. Beginner programmers need to learn the logic of programming more than syntax; additionally, they think 20 lines of code is enormous. Additionally, I never was a fan of Java myself :)

 * Specific ideas for the "project" perspective:

 * Robocode robots-- although, we'd spend more time saying wtf an AI is rather than programming algorithms.
 * Shoot them Up galaga style-- Reletivly simple game, and should have an example of all data structures and stuff required to create the game.
 * MBCS-- use the project that supposed to be explained in the course :-/ Trust me on this, the designers of the course messed up big time here. Who cares about fishes?? Too bad 25% of the test is dedicated to it.
 * --Dragontamer 19:23, 26 November 2005 (UTC)

 * Actually, Now I think this should be in the Wikiversity, computer science section. --Dragontamer

 * I do want to clarify a little bit about Wikiversity. The mission and scope of Wikiversity are being redefined at the moment, and while getting a community together about a topic is part of that mission, the actual textbooks should be kept here on Wikibooks.  At least that is the current direction that seems to be happening.  That we should have this Wikibook listed with Wikiversity is of no doubt, and feel free to be bold and add it there, even in the current state of this book. --Rob Horning 17:51, 29 November 2005 (UTC)

I think I like the direction this books is going, and we certainly can work together. I love the idea of using "robocode" in somewhere. Variations of something like C-robots, or writing a plug-in class that controls I/O signals of a robot is a really cool idea, where we supply the GUI interface and the student merely needs to write the AI for the robots. Good game AI writing is something that can teach a whole bunch of valuable programming techniques, has "instant" feedback to the student including bragging rights ("my robot is better than yours"), and can be done both by rank amature programmers and can still be a challenge for advanced students that perhaps shouldn't even be in the AP class at all.

The same goes for designing a game. I actually taught a class where I taught classes by implementing a simple tiled graphic game like Final Fantasy or Elfland, where a group of objects like weapons, monsters, and terrain types were set up as classes. One of the interesting aspects of that session was not so much the game itself (that was a fun topic and attracted the interest of the students), but the process that all software design teams have to go through when designing more than a simple example program.

I went through and actually started writing a software architechture document together with the students, trying to specify what in fact the game would do. We debated various concepts for the game, strategies for putting the software together, and in abstract even what kinds of objects we would be working with. In short, it turned out just like the dozens of software design meetings I've had with real developers, including donuts, lame jokes, and strong opinions coming from sometimes unusual participants to include or exclude a certain idea. We spent about 6 hours not actually doing any programming, but doing software design from a planning perspective. This is something that is very rarely if ever actually taught in any programming class except by a very good Software Engineering professor, and that is an upper-division college class at that. I think you can spend a chapter going over the concept in a high school textbook in a simplified form, and it teaches good habits from the beginning. Even for students who don't become CS majors nor programmers later on in life, it would be good for them to see what real life engineering meetings can be like and what the difference is between a mere hacker and a real engineer, and why engineering design matters. Classic engineering horror stories like the "Galloping Girdy" Tacoma-Narrows bridge in Washington state, the Ford design of the 1970's Pinto that killed thousands of people, or even the design of the Space Shuttle Challenger; could be brought up as examples of how lousy engineering design does affect even ordinary people and some of the real world headaches that come from lack of planning. I can think of many software projects in particular where millions or even billions of dollars get spent and the project is eventually written off.

I also know from experience that if you are learning a programming language, it really helps to focus your attention if you have a need for the programming concepts you are learning. This is where I think having a large major project that is expected to be written by the students during the term together with a series of short traditional program stubs to experiment with programming concepts should be used together. The large project should be collaboratively written as well, so introducing concepts like version control, signing up for modules, bug reports, module stubbing, and software testing concepts could also be dealt with. Particularly for the AP Computer Science AB course this should be implemented. To help assist teachers new to this concept, several different kinds of suggested projects should be offered.

I know this is a huge project I am recommending. This can be, I think, a very good survey course for computer science. High School students can be taught how to do more than just balance their checkbook with their computer (a lousy application of computers if I ever saw it), but can be given a glimpse into real software engineering to whet their tastes or convince them that there is much more involved than what is demonstrated poorly by Hollywood movies of what programmers in real life do. --Rob Horning 17:51, 29 November 2005 (UTC)

 * I agree with all that you said. I know for a fact that I'm struggling trying to keep hold a project. As said before, I'm still a student... I know the theory but no practical "engineering" aspect of programming. I would love to have had engineering straight at the beginning of my CS course. --Dragontamer

 * I also think that this book/course could be a good jump start on the Wikiversity. Easily, it is one practical goal that an E-community can actually aim for. --Dragontamer

Nice Job on the outline
But it isn't AP computer science :) This is more and more feeling like the ideal course for wikiversity, and maybe we shouldn't be aiming at AP computer science. Lets ditch the title and go for just simply "Into to Computer Science" and use whatever language we want. How bout that? We need such a book in the wikiversity anyway--Dragontamer

Oh, and I'm not saying "stop the book", I'm saying, lets change titles, change direction, and aim at that big picutre you want. But we need to start from the beginning, change everything to what we need idealy.

I say ditch Java, go for Python or (Dr.) Scheme. Both have GUIs avaliable in some sort of way. Python has more applicable software engineering stuff in it (it is OOP, Scheme is functional, so we can't teach OOP in scheme as well as in Python). Both seem to be cleaner than Java however, so its a toss up on the CS side of things.

Again, we need a textbook on Computer Science before starting wikiversity, so this should probably be the starting place. --Dragontamer

 * Interesting thought. I'm not as conversant in using Python as other languages, but from what I've seen it may be a much better intro language.  If you don't mind the plug and tie in with Microsoft, Sharp Develop (or #Develop as it is called) is a very nice tool that is also a nice GPL'd GUI interface.  This is also the framework that Monodevelop is being modeled after and I think is an outstanding IDE for beginners.

 * As for ditching the AP aspect, I think it would still be useful to follow it somewhat as a guide, and try to make sure that we at least include all of the topics that the AP test recommends. We could also try to dig up the ACM/IEEE Computer Science ciriculum recommendations to make sure this "course" will at least meet those basic objectives.

 * Most high quality AP courses that I've been privileged to be associated with (I spent a little bit of time recently as a substitute High School teacher) usually used college-level textbooks anyway. As I said earlier, I want to de-emphasis the language issue anyway, and we can even have multiple (computer) langauge versions available as well through transclusion of text and some very minor rewrites where language specific features are emphasized.  Just for kicks it would be fun to have an intro to Computer Science...Intercal version. (I'm not being too serious here though).  Most intro classes are very heavy into teaching syntax, and I think that is a huge mistake.  We are teaching theory about computers, not just how to be a junior programmer for the rest of your life.  --Rob Horning 17:51, 1 December 2005 (UTC)

 * That would be fine. How about sticking with a language angostic textbook, akin to TAOcp? Algorithms can be easily described through pictures/animation, words, and simple english sentences. Such a class is being discussed in the wikiversity right now; it would be too hard to stop edit wars for "my pet language", and if we are making a general CS textbook, we shouldn't need a language anyway. We just beef up the prerequisites to "Know at least 1 programming language" and volia. Examples can be written in different languages as people go in. --Dragontamer

 * Ahh, scratch that. I don't see it possible :) --Dragontamer 12:21, 3 December 2005 (UTC)

Development Environments
I'm now looking for some base development environments that new CS students could use. You (User:Dragontamer) suggested that Python had some reasonable GUI development environments. I'm game to try some out if you have some suggestions. The idea of using Python as an introductory langauge really does intregue me in some weird perverted way. It offers many of the benefits that BASIC offered back in days of yesteryear, but being a little more up to date in terms of modern programming concepts. Like I said, I don't know Python other than some demonstrations I saw from a Python guru that I knew, but I've been programming long enough to know that sticking to one language is going to keep you in a rut as a programmer as well.

I want to stick to one single programming language... at least to start with. The multiple computer programming language version will have to come later, although I may try it out with C# as an experiment as well. Java just doesn't inspire me, but I'm willing to give it a try. An intro text using Python might also get some support from the larger Python community as well, which will be likely to help out here on Wikibooks. I just don't see that with the larger Java community happening. Python users tend to be evangelical in their language usage and would love this forum. --Rob Horning 18:29, 3 December 2005 (UTC)

 * I'm not very good at Python myself; though if you want something somewhat GUI but everyone will love, we probably should use pyGame. It is easy enough to be taught to a beginner programmer. From there, we can probably create a game? --Dragontamer 21:00, 4 December 2005 (UTC)

 * Ideally I would love a GUI design environment like Visual Basic/Delphi/Visual Studio that allows you do to design forms and windows without having to touch actual programming right away. If one doesn't exist with Python, I may even be tempted to write it myself.  I've worked on similar projects in the past.  I know there are class libraries to work with many GUI frameworks, so I don't think this would be that complicated of a project to accomplish.  --Rob Horning 01:50, 5 December 2005 (UTC)

 * You mean like http://glc.sourceforge.net/ and http://glade.gnome.org/ ?? GTK+ is the library for that GUI design environment, supposedly it isn't very mature on Windows but works great in Linux/Unix based systems. --Dragontamer 01:59, 5 December 2005 (UTC)

 * GTK has matured quite a bit on Windows... mainly driven by the GIMP for Windows software. It is still clumsy and has a few problems, mainly from being so different in look and feel from the standard Windows API libraries.  Lazarus (Free Pascal GUI editor) uses GTK as well.  I'll have to see what the current state is right now, but this is a good place to start.  Thanks for the heads up.  --Rob Horning 16:17, 5 December 2005 (UTC)

Speaking in generalities instead of code
Ideas in Computer Science should be able to be applied to any language that will support it. Computer Science isn't the study of languages themselves, but the techniques used to implement them. So why not just include the least amount of code as possible? You could still show an example here or there in a fairly common and portable language like C or Java.

I have an entire study packet of the Marine Biology Case Study which is a standard project that students are expected to know the ins and outs of by the end of the year. I also have a textbook that is hundreds of pages of sample questions for the test. Plus tons of knowledge on the topic. We used Java in our class. I'll throw in whatever info I see fit once this gets started. Themikeflynn 06:54, 5 March 2006 (UTC)

 * Also, I don't think this should get too into creating a game, reverse engineering or disassembly. They are great Computer Science topics but I've never seen them mentioned in any AP Computer Science AB related information. Keep this simple, remember that many kids taking the class aren't computer science degree seeking students but rather high school students looking for some other AP class to put on a college application. Themikeflynn 07:01, 5 March 2006 (UTC)

I understand to a point what you are saying here, but the fact is a computer science class simply must get into programming, and gobs of it. And (unfortuntely) you have to select a language of some sort to start with in the first place. This is an eternal debate that was started originally by Dartmouth College when they invented BASIC (yes, it was not Wm. Gates III who invented that language). Due to political reasons alone and not because of any technical purposes, early computer programming languages have shifted around from one language to another to the point it is now just the flavor of the month, with Java being the hot language of the moment a couple of years ago.

Students can only learn about programming computers by actually programming computers and doing experiments and trying new things.

As far as creating a game is concerned, it is some very lousy teachers who don't understand the typical high-school aged hacker and something they may be interested in. There is no student who is interested in setting up a tax calculation program or a workbook that keeps track of grades. Those may be of interest to the instructor, but students would be completely turned off from even having to use software like this. Simple games can be created with relatively little actual software code behind them (especially when using plug-in components and standard libraries).

The point here is that you can have one large project that is more of an application of the concepts that you are learning. I know this seems like requiring a 1st grader who is just beginning to learn how to write to be able to come up with a 30 page research paper with citations and endnotes, but I don't think it is that much of a leap as it may seem. Far too many people have taken a class like basic CS 101 (which is exactly what the AP Computer Science curriculum is duplicating on a high school level) and assume that most computer software is like the one or two page assignments they had to turn in. There is a very different way that you have to look at developing a larger piece of software compared to a typical quick and dirty assignment handed in for a CS 101 class. Perhaps having to debug a 3000 line piece of software will give some students the appreciation of why many software engineering projects (like the Denver Stapleton Airport baggage handling equipment software or many Y2K issues) seem to go on forever and don't seem to be solved, even after millions of dollars worth of effort being poured into them.

In addition, students in school need to learn that they can't simply be working alone and need to cooperate in a team development environment. That is true not only for software development, but for just about any sort of work experience that they are going to be dealing with in the future. By having a medium (3000 to 10,000 lines of code) piece of software that is developed jointly by several students, this is an ideal way to demonstrate the need for cooperation and negotiation that makes up the modern work environment. I don't know how you can test for that sort of experience through standarized testing, but this is a critical skill that many high school and even college graduates are seriously lacking. Students who cooperate and pull together are going to have a simply outstanding "final project" and students that can't get along are going to see something that won't even compile, much less do anything. A final project like this is also something cool to show off to parents and school administration, to show that yes, kids can do some amazing things. That AP courses don't do something like this is a fault of the instructor even considering it as an option.

As for reverse engineering and disassemblers, again I think it is a lack of imagination and creativity of the people who set up the original AP Computer Science guidelines that it wasn't even considered. My thought on these subjects was to have something that teacher could have that was very interesting, reflect on the experiences that students have gone through over the full length of the course, and introduce the idea that even with all of the material they have covered with the course that it is just the very beginning of a huge field of human knowledge that they have just taken some very baby steps into. Generally the last few days of class in a school year (especially for High School students) they are hardly paying attention anyway over what is being presented, and some teachers don't like to "teach for the test". If done properly, this can give an instructor the chance to make the last few days of class something very memorable and give them a reason to even show up to class (think a High School senior on his last day of class? Are they even going to be attending?). These topics also wouldn't be interfering with any final assignments that had to be handed in, as they are more lecture oriented as well. In short, a chance for an instructor to "let their hair down" and have fun with their kids. I am not advocating that an AP student is going to be writing a disassembler, but that perhaps they should have it explained what would go into a disassembler and how it can be useful. --Rob Horning 13:48, 5 March 2006 (UTC)

 * I agree completely that most computer science classes are taught in a very dry technical matter. In our class, every program was treated as an assignment rather than a creative or collaborative effort. We were never given a group assignment throughout the entire year mostly because some of the kids were very anti social (a caricature of a typical high school hacker). Our instructor was a very smart guy that knew a lot of stuff but he was a very procedural teacher that didn't require your creativity, just the bare minimum. Also he would always touch upon the topics that all of us wanted to do, such as hacking another computer over the school network or setting up a keylogger, and would even tell us the best way to do it, but we were never given the chance to work on it as a class project. Being the network administrator of the school district, it was easy to understand why, but it did get kind of annoying. He stuck with the curriculum and we worked on projects such as finding the most efficient path in a field. That could definately be applied to a game, but we never went much further than just finding the path.

 * So if you can present this book in a way that teaches or reviews every topic that is in the curriculum of an AP Compsci class, but in a matter that takes on projects such as games, disassemblers and all that fun stuff, then sure I'm all for this. All I meant to say last night was that they were never even mentioned in any actual AP Compsci textbook. I'm more interested in how you will approach those subjects now that I understand where you are planning on going with them. Themikeflynn 19:22, 5 March 2006 (UTC)

 * Well, at least in my school district, the APs are a full month and a half before school ends, so we used that time to work on a final project, often in pairs. I would also like to comment that that was a very helpful part of the class, because I learned that you cannot program anywhere near what you thought you could. On another note, this project, and other "needed" stuff like GUI, I/O, etc. not taught in AP CS AB should go after the AP CS material, because it is not tested. IMacWin95 15:07, 18 March 2006 (UTC)

New Member
Hi, y'all. I (Kjosib) am willing to help write some of this textbook. You might want to see what's been done with the intro and its talk page to see where I'm coming from. I've been programming professionally for some number of years, and my formal education was at UTexas. I'm going to be reviewing the updates to Java since I last used it professionally (2003) in the next while, and I should be able to help with a fair amount of the materials. I don't mind writing to the topics on the sylabus, because that's roughly what people are expected to learn in the corresponding real class. I've not seen the actual test in many years, so I won't be influenced by it. Besides, when I took it, the test was in Pascal. So anyway, I feel qualified, and if no one else does, I'm going to start posting more bits as and when I have time.

 * I hope that you do so. I was the person who wrote the initial outline, but got stretched very, very thin with projects going off in a couple hundred directions here on Wikibooks, together with the demands of being an administrator on two projects now (Wikibooks and Wikiversity).  That and I took a bit of a Wikibreak this past month just to take care of my personal life.

 * Still, the direction I tried to go with the outline was to cover important topics that are sometimes missed in introductory classes. This in particular was why I added the software engineering section almost right at the beginning, as this is something that kids interested in software development as a career should know as well as those who are to be general citizens should also be aware of even if it isn't explictly on the AP-CS test.  I could give countless examples from the Space Shuttle main computer software to the software disaster at the Denver Colorado Airport, where substantial quantities of money are spent on software engineering by taxpayers, often with litle or no accounting.  BTW, the Space Shuttle computer software is something of a model of success and is more of an example of how public agencies should be contracting with computer programmers.

 * As I tried to indicate, I also wanted to introduce the idea of GUI programming right from the beginning, hence the idea that classes, methods, and OOP programming concepts are something that will be also taught lightly in the beginning but elaborated upon later. Command-line programming is something that will be all but ignored and only dealt with as a special topic, not the primary way for beginning programmers to get their feet wet.  This isn't the 1970's and a command line prompt is hardly even seen by computer users any more.  --Rob Horning 23:13, 26 September 2006 (UTC)

We need to keep in mind that the rank beginner must be mentally prepared to read the book, follow the work, and learn enough to pass the AP test, at least at the A level. The College Board does not test user input in any form. As far as I'm concerned, that means you can put all the "input" in the source code in the form of initializers, and treat the programming process as a way to get the computer to solve hard problems for you. In this vein, it may be wise to emulate the instructional style of Barron's Calculus the Easy Way, in which an intrepid adventurer lands on the shores of a beleagured country desperately in need of solutions to calculus problems. I might concoct a Tron-like adventure wherein you must program your way out of a cardboard box.

It's true that modern beginners don't generally grok command lines. One way or another, you'll have to compile and run Java programs if you expect to learn Java and pass the test. That means that students must have a Java development environment set up on their computers. There are many. Some require the use of a command line, and some don't, but all provide console output, which is good because it's on the test.

The classic "Hello World!" program is similar to the first day in a decent foreign language class. You experience a greeting and salutation in the language you've set to learn, and soon enough you can participate in or initiate such action yourself. Nothing seems to make any sense for the first few weeks, but once you've studied for a while, it's hard to imagine not understanding such a simple utterance. The essential need is for a simple exchange which can be explained simply. GUI systems are not up to the "first week of programming" test. Furthermore, they are not generally illustrative of deep concepts in computer science. Instead, they tend to focus more on the software engineering and usability issues of complex systems.

GUI programming can be very satisfying, any many students may be motivated by the opportunity to construct programs which use a GUI. However, I don't mean to contribute to a book on GUI programming in particular. For starters, you'd have to pick a GUI framework. Then, you'd need to cover all manner of things about that framework. This is already done perfectly well by the people that created the GUI framework in the first place. The only obstacle is that you must know how to program and how to read code and its documentation, which this course can help.

Anything on GUI creation which is consistent with the goal of getting students past the AP test is fair game for inclusion in the book. However, please keep in mind that a GUI is not on the test. If the course introduces a concept, it should be for the furtherance of student understanding or motivation. You can probably get away with introducing some GUI work part way through. However, let's not go hog-wild. I think that some basic 2-D graphics programming is a good idea, and it can also motivate some interesting problems. For example, let's code some animation, perhaps simulating some physics along the way. This is closely related to game programming, and you'll keep interest that way.

I think that many, but not all, of the topics on the AP test can be covered by developing parts of video games. If some related exercises are left to the reader, then many students will have plenty of motivation to continue learning even after the course is done.

--Kjosib 13:15, 29 September 2006 (UTC)

 * I may end up taking this whole outline and moving it to another book, because as you are pointing out, the folks who make the AP CS test are hard core command line folks and we can't get around that.

 * Of course, this is "teaching for the test", which I hate and deplore, but in this situation it may be more of a ncecssity. If this textbook is to be taken seriously, we may have to completely cull the GUI material.

 * On the other hand, as I was trying to point out, in the real world GUI programming is going to be the rule rather than the exception, and any programmer who doesn't understand GUI programming, and I mean living and breathing it, is not going to go too far. Furthermore, I fail to see how with modern RAD-GUI development environments that it is any more difficult to program for a GUI than a CLI, and perhaps more complicated for the CLI.  That the test does not cover GUI development I find is a short coming of the test itself and its designers.  Of that I feel I can be critical of the AP test.

 * BTW, GUI development does not mean hard core computer graphics design and priciples. It just means throwing a few buttons and dialog boxes on a screen and pressing the compile button.  A good RAD environment can have a rank beginner be able to do this in five minutes, with some hand-holding by an instructor.  I would bet you could get a beginning programmer to develop a GUI window with the words "Hello world" and an OK button to close in far less time than you could get one to write a CLI version that does the same thing with string output functions.  --Rob Horning 21:38, 6 October 2006 (UTC)

Restarting development of this text
This text appears to have had very little development in over a decade. I'm an AP Computer Science A teacher who also has significant experience with curriculum development. I intend to build up this text with resources, projects, question banks, and updated information to turn it into a central free resource for studying for the exam. This may generate further interest and contributions as a wiki project. — Preceding unsigned comment added by Avisinthetoolbarn (talk • contribs)

title: Talk:AP Computer Science


text:
Handbook of Genetic Counseling/Developmental Delay and Mental Retardation-2

Developmental Delay and Mental Retardation

Contracting

 * What is your understanding of why you were referred?
 * What is your main concern?
 * I understand that some members of your family have MR
 * Do you know what caused their MR?
 * You were referred to GC because sometimes there is an underlying genetic condition that is the cause MR
 * Sometimes a cause of MR remains unknown
 * Obtain prenatal history

Pedigree

 * Learning problems or MR
 * Were they in special classes at school
 * Do they live with someone who cares for them
 * Do you know of any tests that were done to try and determine the cause?
 * Developmental delays
 * Birth defects (heart defects, cleft lip or palate)
 * History of pregnancy losses
 * Anyone who died young or unexpectedly
 * Chronic health problems
 * Anyone with seizures
 * Anyone with speech problems

Etiology of Mental Retardation

 * Many causes of developmental delay and MR
 * Common causes are genetic syndromes, multifactorial conditions, environmental exposures, infections during pregnancy, drug and alcohol use during pregnancy, problems with the birth or delivery, prematurity
 * Cause in many individuals remains unknown
 * In mild MR, a specific risk factor has been identified in about 43% of the cases studied. Only 24% of these cases yield a fairly clear or convincing diagnosis. 2, 3 Of those, 14% are classified as genetic and 10% environmental.
 * With moderate-severe MR, a cause is determined in up to 64% of cases with 45% of those being linked to genetic causes and 19% to environmental factors. 4
 * The seemingly lesser role of genetics in milder retardation may have something to do with the fact that some who fall into the mild MR category may simply represent the low end of the normal range of human intelligence.
 * Severe mental retardation is more likely to have a genetic component (50% of cases have a major chromosomal cause).
 * Down's syndrome accounts for 5% of mild MR cases and 30% of severe MR cases, 6, 7
 * telomere deletions or duplications account for about 7.5% of MR 19
 * Fragile X is seen in 5% of both mild and moderate-severe MR. 8, 9
 * more than 500 other genetic diseases, mostly very rare, have also been associated with MR 10

Incidence

 * 2-3% of the general population is affected with some level of mental retardation
 * 85-90% of patients with mental retardation fall into the mild range (IQ of 50-70)
 * Most live at home or in the community and have some level of independence.

Recurrence Risks

 * This is largely dependent on the cause of the mental retardation.
 * If cause is unknown, recurrence can be quoted as 1-25%, (this takes into account causes ranging from a non-genetic environmental exposure to an autosomal recessive condition)
 * Studies have shown that a couple who has had one child with MR are about ten times more likely to have another
 * Study at Greenwood genetic center preliminary results
 * 452 probands with average IQ of 41.1 and head circumference in 43%ile with idiopathic MR and a subsequent sibling
 * 502 male and 468 female subsequent sibs
 * 21% of brothers and 14% of sisters also had MR.
 * Recurrence in blacks was 18.3% and whites 17%
 * Higher recurrence risks were positively correlated with higher IQ
 * Question remains of whether it is genes, environment or a combination

Clinical Features

 * Mild mental retardation: IQ 50-70
 * Moderate mental retardation: IQ 35-50
 * Severe mental retardation: 20-35
 * Profound mental retardation: IQ less than 20

Testing

 * IQ testing and a developmental assessment are common first steps

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
User talk:Lord Voldemort~enwikibooks/Quicksand

No original research
I think that the entire concept of a wiki requires a common truth for the content to converge. Without a common truth, I can say one thing, you can claim the opposite, and we can keep overwriting the other indefinitely. This makes it an obvious choice to require NPOV content. Some level of verifiability is implicit in NPOV -- if you cannot verify content, how can you demonstrate that it is indeed neutral. That being said, I think that original research can be both NPOV and verifiable, in which case there is no reason to exclude it from Wikibooks. Encyclopedias are seldom the receptacle of novel information, so it makes sense to me that Wikipedia would exclude original research. What is required is a guideline/policy that permits the community to prevent content from cycling indefinitely, such as can happen with any content that is not verifiable. Incidentally, this is what permits science to progress: verifiability (or rather the inability to disprove things leads people to postulate commonly recognized theories). --Rs2 03:54, 22 November 2005 (UTC)

 * Thank you for your comments... I didn't quite know what should be done with a No Original Research policy, and that is why I didn't just put it into the Wikibooks namespace and start a poll. And although verifiability and NPOV are related, they are vastly different. Thanks again. -- LV (Dark Mark) 15:36, 22 November 2005 (UTC)

 * I think the biggest reason to have the no original research (NOR) policy is because we want wikibooks to be a repository for information, not theory. Also, we don't want wikibooks to become the poor man's substitute for a scholarly journal: scientific study and research needs to go through the proper, time-tested channels of peer reveiw and critique before they can be accepted as being "fact" and put into a public place where people can read and learn. If somebody conducts original research, and that research is then proven to be false, what becomes of the book here? does it suddenly qualify for deletion on the grounds of non-verifiability? We run the risk of simply collecting lots of junk that can't be verified, but also can't be debunked, because it is completely original. I think this policy is starting to look pretty good, and I would probably cast a vote for it once we get the text up to 100%. -- 01:57, 8 December 2005 (UTC)

I (Kernigh) noticed the "no original research" policy in this sandbox. The current version discourages any kind of original research, and encourages all information in Wikibooks to be based on primary and secondary sources outside oof Wikibooks.

In fact, for books like Modern History, this seems reasonable. Actually, Wikipedia and Wikisource can be sources for that book. In contrast, I would get rid of Wikimania05, see Talk:Wikimania05.

However, I wonder how Wikibooks should handle the cases of Genetic transformator for block-based loss-less compression (GT) and Triangular Earth Calendar (TEC); both propose new concepts. Both are modified versions of primary source web pages, so it seems that the policy currently in this quicksand might accept them. (GT might be identical to the source document; I am not sure.) One potential problem is that the source documents might have been copied in by the authors of the source documents. This appears true, at least for TEC. (I am not sure, but Wikisource might have a rule against that.) I suppose that it is debatable whether to have modules like these two.

For Bourne Shell Scripting/Cookbook, that is original work. I wrote one of the three recipes. However, they are all short examples intended to demonstrate existing features of the Unix Bourne shell program, which is not our original work. I would support a policy that kept pages like this (maybe unless they were too large?). --Kernigh 04:11, 7 December 2005 (UTC)

 * You make some good points. But overall, I think that this policy could be effective in it's current state. We should probably allow some original research, such as the Bourne Cookbook page, but those could be determined on a case-by-case basis. But Wikibooks is not a place for actual original research that is intended to turned into a thesis or research paper. -- LV (Dark Mark) 15:25, 7 December 2005 (UTC)


text:
Handbook of Genetic Counseling/Diabetes in Pregnancy

Diabetes in Pregnancy

Overview of Diabetes

 * Disorder in which body doesn't produce enough insulin or doesn't use insulin properly
 * Insulin is hormone made by pancreas
 * Insulin lets body turn blood sugar into energy or store it as fat
 * If diabetes is untreated, high levels of sugar accumulate in blood
 * Can damage organs
 * Blood vessels
 * Nerves
 * Eyes
 * Kidneys
 * Daily insulin injections may help prevent these complications
 * Three types of diabetes
 * Insulin-dependent diabetes mellitus (IDDM)
 * Type I or juvenile diabetes
 * B cells don't produce insulin
 * Classic presentation
 * Weight loss
 * Increased appetite
 * Increased thirst
 * Excessive urination
 * Severe cases can cause ketoacidosis
 * Non-insulin dependent diabetes mellitus (NIDDM)
 * Type II diabetes
 * Classically seen in adults who are overweight
 * Insulin is present but insulin receptors unresponsive
 * Gestational diabetes
 * Caused by hormones or other factors that interfere with bodies ability to use insulin during pregnancy
 * Many women have no symptoms
 * Risk factors to develop gestational diabetes:
 * Over age 30
 * Obesity
 * Family history of diabetes
 * Personal history of gestational diabetes - 50% recurrence
 * Previous baby over 9 ½ pounds
 * Previous stillbirth
 * Occurs most frequently in African-Americans, Hispanic/Latino Americans, Pacific Islanders, and American Indians
 * Usually develops during second half of pregnancy
 * Most women can control insulin levels with diet and exercise
 * Women with gestational diabetes have 50% chance of developing diabetes after pregnancy

Diabetes in Pregnancy

 * Incidence
 * About 1 in 100 women of childbearing age have diabetes before pregnancy
 * About 3-5% of women develop gestational diabetes
 * Risks to fetus
 * In general, the more severe the diabetes, the more severe the outcome
 * Poorly controlled diabetes (all types)
 * Risk for congenital malformations related to severity of diabetes
 * Women with IDDM and uncontrolled NIDDM have 2-3 times incidence of congenital anomalies (6-8%)
 * Women with NIDDM have median risk
 * Women with gestational diabetes at small increased risk
 * Increased risk for macrosomia (25-45%)
 * Baby 10 pounds or more at birth
 * Due to extra sugar in mother's blood that crosses the placenta to fetus
 * Fat tends to accumulate around shoulders and trunk
 * Makes babies difficult to deliver vaginally
 * Can lead to increase in shoulder dystocia, clavicular fracture, and Erb's Palsy
 * Increased risk for pregnancy complications
 * Miscarriage
 * Pregnancy-related high blood pressure
 * Polyhydramnios
 * Preterm delivery - can lead to respiratory distress
 * Stillbirth
 * Increased risk for newborn complications
 * Breathing difficulties
 * Low blood sugar
 * Jaundice
 * Infant mortality is 30/1000 live births (4 X general population rate)
 * Poorly controlled preexisting diabetes (IDDM and NIDDM)
 * Malformations most likely to originate before 7th week gestation
 * Includes risk for:
 * Congenital heart defects (5 X average incidence)
 * Transposition of great vessels
 * VSD
 * ASD
 * Renal anomalies (5 X average incidence)
 * Renal agenesis (6 X average incidence)
 * Cystic kidney (4 X average incidence)
 * Ureter duplex (23 X average incidence)
 * Situs inversus (84 X average incidence)
 * Anal/rectal atresia (5 X average incidence)
 * Central nervous system defects
 * Neural tube defects (10 X average incidence)
 * Anencephaly (5 X average incidence)
 * Caudal regression (300 X average incidence)
 * If blood sugar levels are well controlled beginning before pregnancy, risk for complications falls to almost population risk
 * Women with IDDM prone to microvascular disease
 * Difficult for these women to carry successful pregnancy
 * Causes diabetic retinopathy, kidney disease, coronary artery disease, and nerve disease in peripheral limb structures
 * Pregnancy puts increased demand on already stressed system
 * Prevents optimal maternal-fetal blood exchange

Management of Pregnancy

 * Should begin monitoring blood sugar before pregnancy
 * Since most serious birth defects associated with diabetes originate in early weeks
 * Blood sugar control begun before pregnancy reduces risk of birth defects, miscarriage, stillbirth, macrosomia, and newborn complications
 * Ideally keep blood glucose levels between 60 and 120 mg/dl
 * Monthly blood test to measure glycated hemoglobin
 * Substance formed when glucose in blood attaches to protein in red blood cells
 * Test shows how well blood sugar has been controlled for up to 3 months
 * Can help determine when it is "safe" to conceive
 * Can be used to monitor control throughout pregnancy
 * Women should take multivitamin with 400 micrograms of folic acid
 * Beginning at least one month before pregnancy
 * Because women with diabetes at increased risk for NTDs
 * No studies showing that this larger dose prevents NTDs in women with preexisting diabetes
 * Women who take oral medication to control blood sugar must switch to insulin
 * Oral medications may increase risk for birth defects
 * Must be done prior to conception
 * Glucose Challenge
 * Used to screen pregnant women for gestational diabetes
 * Does not need to be offered to women under 25 years because their risk is very low
 * Consume drink with 50 grams of glucose and measure blood one hour later
 * Women with high blood levels of glucose then take glucose tolerance test
 * Glucose Tolerance Test
 * Consume drink with 100 grams of glucose
 * Blood samples drawn one, two, and three hours following to measure level of glucose
 * Identifies women with gestational diabetes who should be monitored
 * Maternal serum AFP screening
 * Since women with diabetes at increased risk to have baby with neural tube defect
 * Maternal serum AFP is elevated in all women with diabetes so must be interpreted with knowledge that woman is diabetic
 * Frequent ultrasounds to track fetal growth during 3rd trimester
 * May recommend C-section if large baby
 * "Non-stress" test to monitor baby's heart rate

Control of Diabetes During Pregnancy

 * Diet
 * Recommend that women get nutritional counseling
 * Diet may need to be modified as pregnancy progresses
 * As a general rule, women should consume 2,200-2,400 calories per day
 * Exercise
 * Helps control diabetes by prompting body to use insulin more efficiently
 * Recommended for women with gestational diabetes and some with preexisting diabetes
 * Insulin Treatment
 * Given to many women with preexisting diabetes
 * Requirements change during pregnancy
 * Usually increase after 20-24 weeks
 * Stabilize by 36 weeks
 * Only 10-15% of women with gestational diabetes need insulin
 * Recommended if blood sugar levels don't stabilize after two weeks of diet control
 * New oral medication being tested that has been shown to not increase risk of birth defects or complications
 * Blood sugar levels may be difficult to control after delivery
 * Especially true if woman is breastfeeding
 * Blood levels usually return to normal for women with gestational diabetes

Resources

 * American Diabetes Association
 * Phone: (800) 342-2383
 * Web: www.diabetes.org

 * March of Dimes
 * Phone: (800) 367-6630
 * Web: www.modimes.org

 * Healthy-ojas Diabetes Association
 * Web: http://healthy-ojas.com/diabetes/diabetes-details.html

Reference
"Diabetes in Pregnancy." March of Dimes Fact Sheet. www.modimes.org Emery AEH, and Rimoin KL, eds. Principles and Practice of Medical Genetics (1990). Rope, Alan. "Pregnancy Complicated by Diabetes Mellitus." Topics in Medical Genetics lecture (2002).


text:
Handbook of Genetic Counseling/Diabetes Mellitus

Diabetes Mellitus

Genetic etiology of the condition

 * Diabetes mellitus is characterized by hyperglycemia and relative or absolute deficiency of insulin. It is one of the most common chronic disorders, affecting 5-10% of the adult population in the western hemisphere. There are two types of diabetes. Type 1 is insulin-dependent diabetes mellitus (IDDM) and represents about 10% of all cases. It results from the destruction of the Beta cells of the pancreas, which is an auto-immune process. Type 2 is non-insulin-dependent diabetes mellitus (NIDDM) and represents around 90% of the cases. It has a poorly defined pathogenesis, but may cause resistance due to a decrease in insulin receptors and interact with outside factors such as obesity.
 * Inheritance: the genetics of diabetes mellitus is complex, with multifactorial inheritance indicating an interaction of both genetic and environmental factors. The disease itself is not inherited; rather it is a susceptibility to the disease. (Type 2 has a greater genetic component.)
 * Risk factors: family history, obesity, lack of exercise, age over 30. Ethnic backgrounds of African American, Latino, Native American, and Asian have twice the risk for developing diabetes than Caucasians.

Incidence and carrier frequency

 * Type 1 (IDDM) has an incidence of about 1 in 200 Caucasians and usually manifests early in life. Risk to sibling is 6% and risk to offspring is 2.5%. The male gender may have an influence on predisposition.
 * Type 2 (NIDDM) has a recurrence risk to siblings and offspring for over disease of 5-10%, while there is a recurrence risk for abnormal glucose tolerance of 15-25%.
 * Diabetes mellitus frequently accompanies the symptoms of Fredriech's Ataxia. This appears to be the case in this family. Therefore, Mr. and Mrs. R's offspring may be at a lower risk.

Clinical features

 * In both types, insulin deficiency leads to hyperglycemia which is responsible for complications like microvascular (retinopathy and nephropathy) and macrovascular disease (atherosclerosis).
 * Type 1: The typical patient is a thin, ketosis-prone juvenile who requires insulin to live. It usually occurs in childhood, adolescence, and early adulthood with acute onset of polyuria, polydipsia, weight loss, severe hyperglycemia, and ketoacidosis.
 * Type 2: The typical patient is an overweight adult whose diabetes can be managed by diet or oral medication (although they may receive insulin.) It is usually much less dramatic and presents in an overweight person later in life. Symptoms include tiredness, frequent urination, thirst, blurred vision, and frequent infections with slow-healing sores.
 * During pregnancy, the need for insulin is often increased (diabetogenic).

Age of onset, natural history, and life span

 * It is important to note that either type can occur at any age, although Type 1 is usually younger (before 30) while Type 2 is usually older (after 40).
 * Manifestations can range from asymptomatic glucose intolerance, to acute medical emergencies, to chronic complications.

Testing

 * Blood tests: elevation of plasma glucose (fasting level of at least 140 mg/dl)
 * Urinalysis for glucose and ketone bodies
 * Glucose tolerance tests/insulin assays
 * Molecular analysis of HLA genes (IDDM)

Surveillance, management, and treatment options

 * Insulin, dietary management, and oral hypoglycemic agents, exercise
 * Eye exams and podiatry care is important
 * In pregnancy, there is a dose-response effect where the better the glycemic control in the first trimester, the lower the risk of birth defects in the fetus.

Differential diagnoses

 * Gestational Diabetes: have an insulin resistance . . . the pancreas is working correctly, but the tissue is resistant . . . first recognized during pregnancy (screened at 24-28 weeks) and then usually returns to normal. Teratogenic effect seems to increase when insulin is required during the third trimester (in 20-30% of the women) and if control it is poor during the first trimester.
 * Two types: Type 1 - must have insulin along with diet control
 * Type 2 - can control blood sugars by diet alone
 * Risk factors: family history of diabetes, advanced maternal age (AMA), obesity, and a history of macrosomia.
 * Up to 50% of women with gestational diabetes may develop overt diabetes in 5-8 years following their pregnancy.
 * Diabetes is associated with a number of genetic syndromes (over 60).

Psychosocial issues

 * The risk for a major congenital malformation in the infant of a diabetic mother is estimated to be two to three times greater than the general population.
 * Risks to the mother include miscarriage, pre-eclampsia, and caesarian delivery while risks to the fetus include congenital anomalies (caudal regression, NTDs, renal and cardiac abnormalities), macrosomia, hydramnios, and perinatal morbidity or mortality
 * Various community resources and support groups (some web based).

Resources

 * Creasy and Resnik. (1994) Maternal-Fetal Medicine: Principles and Practices, 3rd Ed. WB Saunders Co: Philadelphia.
 * Robinson A and Linden MG. (1993) Clinical Genetics Handbook, 2nd Ed. Blackwell Science Pub: Boston.
 * Schulman JD and Simpson JL. (1981) Genetic Diseases in Pregnancy: Maternal Effects and Fetal Outcomes. Academic Press: New York.
 * Thompson MW, McInnes RR, Willard HF. (1991) Thompson & Thompson Genetics in Medicine, 5th Ed. WB Saunders Co: Philadelphia.


text:
Cookbook:Mushroom Tofu Soup

Ingredients

 * 10.5 oz soft (silken) tofu
 * 1 ½ cups water
 * 1 medium onion, chopped
 * 8 oz mushrooms, thickly sliced
 * 1 tsp thyme
 * ½ cup dry red wine
 * 1 tsp soy sauce
 * Salt to taste

Special equipment

 * Blender
 * Skillet

Procedure

 * 1) In a blender, blend tofu and ¼ cup water for about 2 minutes, or until smooth
 * 2) Add remaining ¾ cup water and process until blended.
 * 3) In a large skillet, sauté onion for about 5 minutes.
 * 4) Add mushrooms and thyme, and sauté 5 minutes more.
 * 5) Add wine and simmer for 5 minutes.
 * 6) Add tofu mixture and simmer until mushrooms are wilted.
 * 7) Stir in soy sauce, and adjust salt to taste.

Notes, tips, and variations

 * Using less water and/or adding some flour turns this into a delicious cream sauce for pasta.

title: Cookbook:Mushroom Tofu Soup


text:
Guide to Unix/Explanations/Introduction to Editors

The Introduction to Editors briefly introduces the reader to the common Unix text editors and provides links to more information.

Many readers will be familiar with text editors that have graphical user interfaces similar to Notepad from Windows, TextEdit (in unstyled text mode) from Mac OS X, GEdit from GNOME, or KEdit or KWrite from KDE. Other readers will only know about word processors, which are like text editors, but have additional features for applying style and layout to the text. Text editors only deal with sequences of text characters, all in the same font.

The approach of this chapter is to introduce the earliest Unix text editors and progress to the Notepad-style editors. The early editors lack many common features of editors.

The need for a text editor
One who uses the command line, but knows not how to use a text editor, can still create text files using the cat tool and the shell redirection feature (the false spelling of "document" is by purpose).

$ cat > newfile We the people, promoting the common keyboard and preserving a more perfect docmument for all, do ordain and establish three lines of text.

(Note: after entering cat > newfile, the cursor awaits for text to be inputted by the user (in this example: "We the people, [...]"). After all the desired text has been entered, one should type RETURN CONTROL-D to exit the cat tool.)

Suppose there is a want to change this file. In this example, "docmument" has an incorrect spelling; it should be document. Other wants could be revisions to this sentence and the addition of more sentences.

One can append to the file with cat >> newfile, but that leaves the first lines unmodified. One can replace it with cat > newfile again, but that requires retyping the entire file. (Users of graphical user interfaces such as X11 have an advantage: they can use the mouse to copy and paste the text before "docmument", type the correction, then copy and paste the remainder of the text.)

An interesting possibility is if there is a way to delete the extra "m" from "docmument", and to handle more complex tasks like inserting words and rearranging text.

ed
One of the first editors that did this was ed, short for "edit". This has many features of Windows Notepad, but also lacks many. Observe what happens when one starts "ed". Here, "newfile" is the name of the text file to edit.

$ ed newfile 139

A number (here "139") appears. Then the program seems to stop, but no shell prompt appears. This is actually "ed" waiting for commands. On many computers, "ed" actually lacks a prompt.

The "139" indicates that "ed" read in 139 characters that are now ready for editing. We say that the file is open. To be more correct from the perspective of a C programmer, the file was opened and copied into a buffer. The buffer, not the file is open. This means that the disk or storage device will not be bothered until we save the file. Other text editors still follow this behavior, opening files, copying them into buffers, and requiring the user to save to write the file back to disk.

Notice that unlike many editors, "ed" has not yet shown the text of the file. We type a command ,p to do this.

$ ed newfile 139 ,p We the people, promoting the common keyboard and preserving a more perfect docmument for all, do ordain and establish three lines of text.

The command, roughly translated, is that for every line in the file (","), "p"rint that line to standard output.

Now to do some actual editing, we use a command 2s/docmument/document.

$ ed newfile 139 ,p We the people, promoting the common keyboard and preserving a more perfect docmument for all, do ordain and establish three lines of text. 2s/docmument/document and preserving a more perfect document for all,

For line "2", "s"ubstitute the first instance of "docmument" with "document". Here "ed" prints the changed line from the buffer.

We run two more commands, "w" to write the buffer back into newfile on disk, and "q" to quit "ed". If we forget "w", then our edit is lost.

$ ed newfile 139 ,p We the people, promoting the common keyboard and preserving a more perfect docmument for all, do ordain and establish three lines of text. 2s/docmument/document and preserving a more perfect document for all, w 138 q

We made only one minor change, but this already required four commands. Even worse, "ed" error messages are not useful when we mistype commands. Many Unix users never bother to learn "ed". For those readers with interest, this book has a chapter ../ed and sed/ (when someone writes that chapter).

ex
ex is a line editor, a successor of ed and an ancestor of vi.

Links:
 * Unix vi(1) manual page describing ex as well, at man.cat-v.org
 * ex (text editor)

vi
At some point, Unix systems introduced video screens that allow Unix to draw anywhere on the screen. Someone decided that it would be good to create a "visual editor" that allows the user to move the cursor through the file (as it appears with "cat" or the ed "p" command) and make changes. The name of this program is vi, which is short for "VIsual editor". Thus, the namers of this program intended one to call it "vee eye", not "vee" nor "six".

Observe what happens when one starts "vi". First you type the command:

$ vi newfile

Then the screen clears and becomes like this:

We the people, promoting the common keyboard and preserving a more perfect document for all, do ordain and establish three lines of text. ~ ~ ~ ~ newfile: unmodified: line 1

The screen might look different if you have a different version of "vi". Your screen also probably has more than eight lines. However, all versions of "vi" have these two features:
 * a "~" shows a nonexistent line (though you could type a line with only "~" to be confusing)
 * there is a status line at the bottom, here it reads "newfile: unmodified: line 1"

On many computers, you can use the arrow keys to move the cursor. If that does not work, you can use the standard "vi" keys:
 * [h] moves left, [j] moves down, [k] moves up, [l] moves right

For example, one can press [l] for fifteen times to move the cursor from the "W" in "We" to the "p" in "promoting". (In fact, as a shortcut, vi lets one press [1] [5] [l] (one, five, ell). This gives the number "15" to the [l] command, which in this case means to repeat the command fifteen times.) So it is possible to move the cursor through the file, which was not possible with ed.

But what if we want to type the letter "l" instead of moving the cursor? Press [i], which is a command to switch the vi editor from command mode to insert mode. Then type something. Here, the user, with the cursor at "p" in "promoting", typed [i] and then "nominally " (including one space):

We the people, nominally promoting the common keyboard and preserving a more perfect document for all, do ordain and establish three lines of text. ~ ~ ~ ~

Note that some copies of "vi", such as this one, by default never show at the screen whether the editor is in command or insert mode.

To exit insert mode, press [ESC] escape. To save and quit the editor, type [:] [w] [q] [RETURN] which inputs "wq" to the colon prompt.

To learn more about vi, read the Wikibook, Learning the vi Editor.

vim
In new generation of Linux and Unix operating systems, the more improved version of VI editor was released called vim (version 7 latest). VIM incorporates almost all the features of VI and more, including color coding screen, highlights, and spell check within the document.

emacs
emacs was developed at around the same time as vi, and served as a different paradigm to text editing. It allows customization via an in-editor programming language called emacs-LISP, and is a modeless editor (as opposed to vi, a modal editor).

emacs is started much the same way as vi - $ emacs newfile

It will show a screen resembling the below:

File Edit Options Tools Buffers Help We the people, promoting the common keyboard, and preserving a more perfect document for all, do ordain and establish three lines of text. --- GNU EMACS --

Moving around the file is accomplished with the arrow keys.

Entering text is accomplished by simply typing it, and other basic functions such as deleting are accomplished using the customary keyboard keys.

For example, in order to add the text protecting in place of preserving, simply move the cursor down to the space between the words preserving and a, then press the DELETE key ten times. Then, simply key the word protecting.

To save the file, use the keyboard shortcut CTRL-x CTRL-s, that is ''hold the control key and press the letter x. Let go of the control key. Then, hold the control key and press the letter s.'' (To save the file with a new name, then type CTRL-x CTRL-w and emacs will prompt for the name of the new file.) After having saved the file, press CTRL-x CTRL-c to close down emacs and return to the shell.


text:
Talk:Using Firefox/Introduction

Material
This page is pretty weak on material. I think it either needs expanded, or moved to other modules, but it's not really a top priority as of yet --Steeler fan 06:05, 22 November 2005 (UTC)
 * I copied a lot of stuff from Wikipedia since the article is well-written and comprehensive (and was a featured article a while back). Feel free to modify it. Gflores 03:26, 23 November 2005 (UTC)

title: Talk:Using Firefox/Introduction


text:
Futurology/Science

Gene Roddenberry
The two most popular perceptions of humanity's future are: the cyclical pattern envisioned in Gene Roddenberry's tales of sailing the stars in place of the oceans; and the maturation pattern envisioned in Ray Kurzweil's books about how macro-evolution keeps building upon itself to create ever increasingly complex patterns through stages of atomic organization, DNA formation, compounding neural patterns, the building of technology, and the approaching merger of technology and human intelligence. Roddenberry's vision of the future claims to be science fiction while Kurzweil's claims to be science. In order for methods of Futurology to be reliable, we have to quantify the difference.

In his 2001 essay, The Law of Accelerating Returns, [3], Ray Kurzweil proposed a generalization of Moore's law that forms the basis of many people's beliefs regarding a "Technological Singularity". Moore's law describes an exponential growth pattern in the complexity of integrated semiconductor circuits. Kurzweil extended this to include technologies from far before the integrated circuit to future forms of computation. He declared that, whenever a technology approaches some kind of a barrier, a new technology will be invented to allow us to cross that barrier. He predicts that such paradigm shifts will become more and more common as time goes on. He believes that the exponential growth of Moore's law will continue beyond the use of integrated circuits into technologies that will lead to the "Singularity", which he defines as a technological change so rapid and profound it represents a rupture in the fabric of human history.

Harry Turtledove
Harry Norman Turtledove (born June 14, 1949), is a historian and prolific novelist who has written historical fiction, fantasy, and science fiction works. He is probably the best-known and most popular author of the genre of alternate history.

Turtledove has been dubbed "The Master of Alternative History". Within that genre he is known both for creating original Alternative History scenarios such as survival of the Byzantine Empire and for giving a fresh and original treatment to themes previously dealt with by many others, such as the victory of South in the American Civil War and of Nazi Germany in the Second World War.

A recurring theme in Turtledove's fiction is the realistic description of war from the point of view of ordinary soldiers. Turtledove's soldiers are usually depicted sympathetically, though far from uncritically - with the same character who perpetrated acts of appalling cruelty in one episode shown under different circumastances to be capable of compassion and generosity. The above is true also for soldiers fighting for the side which is the clear villain of the piece, such as Nazi Germany and its numerous Alternative History and Fantasy analogues in Turtledove's fiction. His depiction of war always includes civilians whose life is impacted as well as soldiers on the battlefield itself.

Even manifest arch-villains, such as people involved in genocide, are hardly ever cardboard villains in Turtledove's books. In some series the reader can follow, step by step from book to book, the slippery slope by which an originally decent character gets to the point of committing mass murder.

Turtledove's books are almost invariably written in the third person, and the omniscient author is always present to a degree more characteristic in 19th century literature than at most other contemporary works. Turteldove often goes to the trouble of explaining to the reader details of a historical, linguistic or technological theme which are relevant to the scene but are clearly either unknown to the viewpoint characters in the situation described or taken by them for granted.

title: Futurology/Science


text:
Talk:Algorithms/Backtracking

Bounding searches
Maybe there should be some discussion of alpha-beta pruning, as it is a bounding algorithm. Or is there a better place for this? - JustinWick 06:33, 22 November 2005 (UTC)

title: Talk:Algorithms/Backtracking


text:
Talk:Consciousness Studies/The Philosophical Problem/Machine Consciousness

I found the discussion of the the simulation argument and Nick Bostrom's ideas inadequate and somewhat misleading. Even though it is true that Bostrom says that conscious states could arise in random associations of dust particles or interstellar gas, his main thrust is that given an infinite universe (or even nearly infinite) any thing that could happen however improbable will happen given enough time. His case for human beings being part of a simulation is based on a different proposition, e.g. that given the probability of future generations of humans having the ability to create a simulated universe or 'ancestor simulations' containing conscious entities, the probability of any human existing as part of an ancestor simulation was greater than not.

I find Bostrom very much a physicalist (or perhaps a functionalist) in that I don't think he ever considers the possibility of conscious states divorced from some physical substrate, merely that there be 'some' substrate and to that it operates in a way to be functionally equivalent to the human mind.

 * The discussion could certainly be extended, not least with references to earlier versions of the argument by other authors. Bostrom simply states that conscious experience will supervene on the form of his device without providing futher justification (see quote in article). It is this that makes it seem as if he believes in the non-physical. His argument might actually have fallen apart if he could state the physical basis for consciousness because, unless consciousness were a property of Turing machines, his "simulation" would simply be a part of the world containing a conscious entity and anybody can create such a "simulation" by allowing procreation. RobinH 19:09, 22 November 2005 (UTC)


text:
User talk:144.132.38.125

Please do not re-create deleted content. If you think that an article should be undeleted, visit WB:VFU. Thank you.

title: User talk:144.132.38.125


text:
User talk:69.115.112.197

Please do not re-create deleted content. If you think that an article should be undeleted, visit WB:VFU. Thank you.

 * Blocked infinitely for gribberish and using open proxy. --Derbeth talk 12:15, 27 November 2005 (UTC)

title: User talk:69.115.112.197


text: User talk:194.2.91.222

title: User talk:194.2.91.222


text: User talk:212.138.47.29

title: User talk:212.138.47.29


text:
User talk:168.221.27.195

Please stop adding nonsense to Wikibooks. It is considered vandalism. If you would like to experiment, use the sandbox. Thank you.

title: User talk:168.221.27.195


text:
Talk:Ruby Programming/Interactive Ruby

I just installed Ruby 1.8.3 (2005-06-23) [i486-linux] on Ubuntu 5.10, and when I tried irb at the command prompt, I get: "bash: irb: command not found." --Jcarroll 09:49, 22 November 2005 (UTC)

The solution to the above problem is: apt-get install irb

remove cygwin
I remove cygwin and added Notepad++ (I know Atom IDE existed, but it will be sunsetted in 15th Dec)

MrAlanKoh (discuss • contribs) 07:45, 1 December 2022 (UTC)

title: Talk:Ruby Programming/Interactive Ruby


text:
Wikijunior:Big Cats/Fossil History

How carnivores are related
Carnivores are meat eaters. Among the mammals, one entire order is noted for this: Carnivora, which including all cats big and small as well as all hyenas, bears, seals, otters, and animals resembling weasels, wolves, mongooses, and raccoons. Except for the giant panda, all members of Carnivora are deadly hunters. That includes dogs, even if they are well-behaved. All are strong, powerful, intelligent, cunning, agile animals with sharp teeth and claws. All but the panda are fast enough to catch prey.

All living members of Carnivora are related to each other, having descended from the ancestor Miacis, a small meat-eating weasel-like tree climber which lived between 36 million to 58 million years ago, or the Eocene period, in North America, Europe and Asia. It had a larger brain capacity than other carnivores of its day, which is probably why it survived to become the father of all modern carnivores.

Not all carnivorous animals are members of Carnivora. Dolphins and whales are formidable hunters and voracious eaters of meat (typically fish), but they are no closer to being cats than are the Great Apes that eat meat (especially humans, chimpanzees, and baboons). Neither are small mammals called Insectivora (like shrews) that feed on insects and other tiny creatures.

How old is Family Felidae?
The fossil record of Family Felidae extends to the Late Eocene, 34 million years ago. If each of those years lasted a second, the Cat Family would have been around for roughly one year and five weeks. By comparison, the Great Pyramid at Giza would have been around for only 83 minutes, and the Internet for less than 15 seconds (as of 2008). The first known feline was Aelurogale. Its descendent, Proailurus, gave rise to the major branches of the cat family we see today as well as the two sabre-toothed cat lines. Proailurus lived in Europe from 30-20 million years ago.

Notable fossil cats

 * Smilodon - Smilodon fatalis and others - Often called the "Sabre-toothed Tiger" though it is not a tiger, and "Sabre-toothed Cat" though it was not the only line of cats with sabre teeth. The most widely recognized of the fossil cats, it lived in North and South America from 3 million to 10,000 years ago.  A fully grown Smilodon weighed about 450 pounds (203 kg) and had fangs 7 inches (17 cm) long that were used to subdue its large prey.

 * The American Lion - Panthera atrox - It lived from 25,000 years ago to 10,000 years ago in North America. In life, this cat was about 1/4 larger than the African lion, even bigger than the Siberian tiger.  The average male at 11.5 feet (3.5 m) in length would have averaged about 520 pounds (235 kg).  Females were smaller, averaging about 385 pounds (175 kg).  Fossil evidence indicates it had the most highly developed brain of any known cat.

 * The Eurasian Cave Lion - Panthera spelaea - It lived from 30,000 years ago to 10,000 years ago from as far west as England to as far east as Siberia. The largest cat that ever lived, it was 25% larger than the African lion and even bigger than the American Lion.  Ancient cave paintings and carvings indicate this cat had faint stripes, a hint of a mane in some males, tufted tails, and protruding ears.

 * Miracinonyx - Miracinonyx trumani and others - Sometimes referred to as the "American Cheetah," it is remarkably cheetah like and relied upon the same sprinting tactic to overtake its prey. It is thought to have a common ancestor with the Puma.   Miracinonyx lived from 3 million to 10,000 years ago in the prairies and open plains of North America where it specialized in hunting newly-evolved swift herbivores such as the Pronghorn.

Cats and humans in history
For many years the domestic cat was described as a separate species from all other cats, Felis catus. It is now thought to be a subspecies (slight variation) of the Wildcat (Felis sylvestris) and is given the name Felis sylvestris catus. Archeological evidence shows a relationship between man and cat for the past 8,000 years. The most unusual relationship existed among the Ancient Egyptians who considered cats as children of the goddess Bast. When a cat died, family members showed grief by shaving off their eyebrows, and cats were routinely mummified and laid to rest with great reverence.

Certain other cats have been kept over the years for different reasons, but these relationships have never been maintained long enough to result in true domestication. The proper term for cats such as lions or cheetahs that accept human companionship is "human socialized". This indicates that these animals still possess their entire range of wild instincts, which makes properly and safely handling them more of a challenge. There are paintings and engravings of ancient rulers with big cats seated near their throne. Many people kept cheetahs for hunting swift prey.

Certain fossil species such as Smilodon, the Cave Lion and the American Lion were hunted by early humans, who may have contributed to their extinction. Hopefully no future scholars will find us responsible for the disappearance of more splendid animals. Next Topic: In Danger of Extinction

Wikijunior Großkatzen/ Geschichte fr:Wikijunior:Les félins/Historique (les fossiles)

title: Wikijunior:Big Cats/Fossil History


text:
User talk:202.150.96.38

Please stop adding nonsense to Wikibooks. It is considered vandalism. If you would like to experiment, use the sandbox. Thank you.

title: User talk:202.150.96.38


text:
Ada Programming/All Keywords

= Keywords =

= Keywords: abort =

= Keywords: abs =

= Keywords: abstract =

= Keywords: accept =

= Keywords: access =

= Keywords: aliased =

= Keywords: all =

= Keywords: and =

= Keywords: array =

= Keywords: at =

= Keywords: begin =

= Keywords: body =

= Keywords: case =

= Keywords: constant =

= Keywords: declare =

= Keywords: delay =

= Keywords: delta =

= Keywords: digits =

= Keywords: do =

= Keywords: else =

= Keywords: elsif =

= Keywords: end =

= Keywords: entry =

= Keywords: exception =

= Keywords: exit =

= Keywords: for =

= Keywords: function =

= Keywords: generic =

= Keywords: goto =

= Keywords: if =

= Keywords: in =

= Keywords: interface =

= Keywords: is =

= Keywords: limited =

= Keywords: loop =

= Keywords: mod =

= Keywords: new =

= Keywords: not =

= Keywords: null =

= Keywords: of =

= Keywords: or =

= Keywords: others =

= Keywords: out =

= Keywords: overriding =

= Keywords: package =

= Keywords: pragma =

= Keywords: private =

= Keywords: procedure =

= Keywords: protected =

= Keywords: raise =

= Keywords: range =

= Keywords: record =

= Keywords: rem =

= Keywords: renames =

= Keywords: requeue =

= Keywords: return =

= Keywords: reverse =

= Keywords: select =

= Keywords: separate =

= Keywords: subtype =

= Keywords: synchronized =

= Keywords: tagged =

= Keywords: task =

= Keywords: terminate =

= Keywords: then =

= Keywords: type =

= Keywords: until =

= Keywords: use =

= Keywords: when =

= Keywords: while =

= Keywords: with =

= Keywords: xor =

= GNU Free Documentation License =

| /Print version

title: Ada Programming/All Keywords


text:
Talk:Clarinet/Clarinet Basics/Tone/Airflow

I haven't yet read through the entire article on the clarinet, but I think that the content of the section on Tone is excellent. It really is true that, in essence, without a good tone, there really is nothing, no matter how fast or fluidly one may play. It seems to me that this point deserves the emphasis it's been given. Very good emphasis, and very good style. Thanks.

Breathing exercises
This book needs to mention circular breathing, as the Clarinetist relies on it to play continuous music.203.214.4.49Febuary 2006 (UTC)


text: Bookbinding/Materials

title: Bookbinding/Materials


text:
User talk:Abyab~enwikibooks

Hi, there. Please give me some questions in my Questions section below.

= Questions = Please ask me your questions here. Remember to Sign it and put a link to your talk page like this User Talk:Abyab

Your account will be renamed
Hello,

The developer team at Wikimedia is making some changes to how accounts work, as part of our on-going efforts to provide new and better tools for our users like cross-wiki notifications. These changes will mean you have the same account name everywhere. This will let us give you new features that will help you edit and discuss better, and allow more flexible user permissions for tools. One of the side-effects of this is that user accounts will now have to be unique across all 900 Wikimedia wikis. See the announcement for more information.

Unfortunately, your account clashes with another account also called Abyab. To make sure that both of you can use all Wikimedia projects in future, we have reserved the name Abyab~enwikibooks that only you will have. If you like it, you don't have to do anything. If you do not like it, you can pick out a different name.

Your account will still work as before, and you will be credited for all your edits made so far, but you will have to use the new account name when you log in.

Sorry for the inconvenience.

Yours, Keegan Peterzell Community Liaison, Wikimedia Foundation 22:54, 17 March 2015 (UTC)

Renamed
 This account has been renamed as part of single-user login finalisation. If you own this account you can |log in using your previous username and password for more information. If you do not like this account's new name, you can choose your own using this form after logging in: . -- Keegan (WMF) (talk) 04:28, 19 April 2015 (UTC)

title: User talk:Abyab~enwikibooks