Skills you will need for INFM 718N First, you will need a computer! It does not matter if this computer is a laptop or a desktop, or whether it is a Windows, Mac, or unix machine. If it is a desktop, you will need administrator privileges (which you have if you own the computer and which you probably don't have if you don't) and you will need high-speed networking (or your downloads will take forever). If it is a laptop and you have wireless networking, then you can use the high-speed network at the University to do your downloads. Before starting the course, you should be able to: - Download and install software without the use of an automatic installer program on whatever kind of computer you will be using, including the ability to uncompress zip files (I use WinZip for this), to copy files from one directory to another, to edit environment variables, to navigate the directory system using a command line interpreter, and to figure out what went wrong when something inevitably does. You do not need to know advanced techniques like how to manually edit the Windows registry, however. The reason you need to know all of this is that the technique described in the book for installing the software you will need assumes that you know it. This is not a learning objective for the course, so it does not matter whether you know how to do this yourself or whether you simply know someone who knows how to do it that is willing to help you out. Since even machines with similar operating systems can be very different, it is often not practical to offer advice on software installation by email. If you have a desktop machine, there is no real alternative to your knowing how to do this on your own machine. If you have a laptop, you could bring it to the Professor or TA and show us what the problem is, although there is no guarantee that we will know how to fix it if your operating system is different from the one we use (I use Windows XP). - Edit a file and save it where you want it with whatever name you want. Notepad is good enough, but something more powerful like pico would be better. Personally, I use emacs. It is not advisable to use a word processor (e.g., Microsoft Word) because configuring a word processor for the precision and control needed in programming is actually harder than using a simpler editor (the first time Word puts in an unprintable character code or capitalizes something that needs to be lower case you'll understand why!). We won't be going over those issues in much detail in class. You will also need to understand some basic things well enough that we can build on them. Will will discuss these in class, but both the class and the book assume some prior familiarity with the ideas at the level covered in INFM 603. Among those are: - How to construct simply HTML pages using a text editor and the raw HTML codes, and how to read raw HTML that is written by other people (notably, the author of our textbook!). Simply knowing how to use a Web page editor like Dreamweaver would not be good enough because we will be using PHP to generate HTML and you need to understand what you are actually generating. You need not know all the details, but you must know HTML well enough that you can use a reference source to understand what you read or to figure out how to achieve effects that you wish to achieve. Note that the book uses XHTML, but it would be good enough to understand ordinary HTML because the differences between the two are fairly small and you can write PHP with either. - The basic ideas behind programming. The book presents what you need to know to write a program in PHP, but it does not spend much time on how to think about the process of creating programs. You don't need to know advanced concepts like recursion or object-oriented programming when you start the class, but it would help to know the difference between a variable and an array, how loops are used with arrays, how to get from a simple problem description to a nested set of loops and conditional expressions that solve that problem, and how to decompose complex problems into simpler ones using function calls. You need not be expert in any of that, and you don't even need to know those particular buzzwords as long as you understand the ideas. If you can write a program in any language that looks in an array to see if your name is there, you know what you need to know. If not, you would be well advised to pick up any basic introduction to programming (a book or a Web page) and use that to learn to write a few simple programs that involve function calls and nested loops and conditionals. JavaScript comes with every Web browser, so if you need to pick a language to learn for this purpose, JavaScript would be a fine choice. Learning PHP from scratch is equally easy (the same author has a tutorial book on that subject), but getting your hands on PHP before the class starts might not be as easy -- it is not as widely available as JavaScript is. - How to construct a database that contains multiple tables in Microsoft Access, or in some other database management system. You should be able to create queries using join, select and project operators, but you need not know SQL before starting the class -- just understanding the ideas and being able to use a graphical query browser is fine. You won't need to know how to use any database management system's functions for developing user interfaces because we'll be doing that using the Web. You should have been previously exposed to some form of object modeling (e.g., UML or entity-relationship diagrams) and you should understand in at least a general way how object modeling is related to table design in a relational database. But you need not be expert in producing table designs from object models at the outset. The rest of what you need to know, we'll cover in class. In particular, you need not have run a Web server before.