A primary goal of this course is to provide you with abilities, skills, and concepts that will make you more efficient software developers. We'll try to do this directly, by giving you experiences with some tools that will be useful in later courses and beyond. Moreover, we'll try to help you acquire the skill of quickly mastering new tools. Because programming systems are themselves interesting and often quite beautiful (or at least elegant), we will also try to develop a sense of what distinguishes well designed from poorly designed systems.
Because it is important for people engaging in professional activities to think about how their work relates to the larger social context, the second main goal of this class is to make you sensitive to the societal and ethical implications of computing. A portion of this course is set aside for discussions on this topic.
More specifically, successful course participants will:
Traditionally, computer scientists had to acquire most of the above skills on their own. Many did so too late and frequently under the pressure of deadlines. Instead, our goal is to introduce you to various tools and concepts in the more "relaxed" atmosphere of a structured class. Therefore, a good way to think about this class is that everything you learn here is helping you get ahead as a software developer. For instance, the knowledge you will acquire here will make your future course experiences more valuable as you will be able to spend more time focusing on the new ideas in these classes and less time on the details of translating these ideas into working code.
It is important to emphasize that we won't be tunneling down to try to learn every detail of anything. We will be moving quickly from one tool to another, with the idea that you can return to figure out exactly how to do something with a tool later, now that you know the tool exists and have an idea of what it is you're looking for.
This course will expose you to a tremendous number of tools, concepts, and issues. Be warned:
We assume you know the material from CSE 142 and 143.
The following textbooks are required for the class:
The following textbooks are optional. If you are planning on getting either one of them, we recommend that you go to the bookstore and browse through it before making a decision. You will NOT need this book for the class, but it may help you in the future:
The evaluation includes both assignments and exams. Because the best way to learn the tools and techniques that we will show you in this course is through hands-on experience, we expect you to spend most of your time on the assignments.
Late policy: For the homeworks and the issue paper, you are allowed a total of 3 late-days that you can use in 24-hour chunks at anytime. Please note that once you use-up your late days, no additional extensions will be granted for any reason at all. You should thus save your late-days only for true emergencies.
Collaboration policy: You are encouraged to discuss the content of this class. For assignments, you are allowed to discuss them and point each other to relevant documentation (a useful manpage, a book chapter, a website, etc.). However, each group of two students must produce their own solution, and you may NOT look at the solutions produced by other groups. As you work on the assignments, you will find useful information in the lecture notes, the reference books, and on the web. Feel free to lookup any information on the web that you may find useful in completing the assignments.
Please see the course schedule posted on the course website (http://www.cs.washington.edu/education/courses/cse303/10wi/).
I hope you will attend every lecture. If you miss a lecture, talk to a friend who was present, and be sure to check the class website for messages.
The course website and mailing list will be used extensively to provide you with course information, such as the class schedule, lecture notes, homework assignments, class messages, and other things.
Information about labs, computing resources, and various other useful pointers are posted on the: class website (http://www.cs.washington.edu/education/courses/cse303/10wi/resources.html).