Computer Science

Books

Code – The Hidden Language of Computer Hardware and Software
By: Charles Petzold

The Annotated Turing
By: Charles Petzold

Internet Resources

Harvard’s OpenCourseWare

Excellent classes on just about everything you need to know.  I’ve added the course discription and teacher for each available class.

Introduction to Computer Science I
Instructor: David J. Malan

Introduction to the intellectual enterprises of computer science and the art of programming. This course teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, encapsulation, data structures, databases, memory management, security, software development, virtualization, and websites. Languages include C, PHP, and JavaScript plus SQL, CSS, and HTML. Problem sets inspired by real-world domains of biology, cryptography, finance, forensics, and gaming. Designed for concentrators and non-concentrators alike, with or without prior programming experience.

http://cs50.tv/

XML with Java, Java Servlet, and JSP
Instructor: David J. Malan

This course introduces XML as a key enabling technology in Java-based applications. Students learn the fundamentals of XML and its derivatives, including DTD, SVG, XML Schema, XPath, XQuery, XSL-FO, and XSLT. Students also gain experience with programmatic interfaces to XML like SAX and DOM, standard APIs like JAXP and TrAX, and industry-standard software like Ant, Tomcat, Xerces, and Xalan. The course acquaints students with J2EE, including JavaServer Pages (JSP) and Java Servlet, and also explores HTTP, SOAP, web services, and WSDL. The course’s projects focus on the implementation and deployment of these technologies.

http://cs259.tv/

Building Dynamic Websites
Instructor: David J. Malan

Today’s websites are increasingly dynamic. Pages are no longer static HTML files but instead generated by scripts and database calls. User interfaces are more seamless, with technologies like Ajax replacing traditional page reloads. This course teaches students how to build dynamic websites with Ajax and with Linux, Apache, MySQL, and PHP (LAMP), one of today’s most popular frameworks. Students learn how to set up domain names with DNS, how to structure pages with XHTML and CSS, how to program in JavaScript and PHP, how to configure Apache and MySQL, how to design and query databases with SQL, how to use Ajax with both XML and JSON, and how to build mashups. The course explores issues of security, scalability, and cross-browser support and also discusses enterprise-level deployments of websites, including third-party hosting, virtualization, colocation in data centers, firewalling, and load-balancing.

http://cs75.tv/

Mobile Software Engineering
Instructor: David J. Malan

Introduction to principles of software engineering for mobile devices and best practices, including code reviews, source control, and unit tests. Topics include Ajax, encapsulation, event handling, HTTP, memory management, MVC, object-oriented design, and user experience. Languages include HTML5, JavaScript, Objective-C, and PHP. Projects include mobile web apps and native iOS apps.

http://cs164.tv/

Building Mobile Applications
Instructors: David J. Malan and Dan Armedariz

Today’s applications are increasingly mobile. Computers are no longer confined to desks and laps but instead live in our pockets and hands. This course teaches students how to build mobile apps for Android and iOS, two of today’s most popular platforms, and how to deploy them in Android Market and the App Store. Students learn how to write native apps for Android using Eclipse and the Android SDK, how to write native apps for iPhones, iPod touches, and iPads using Xcode and the iOS SDK, and how to write web apps for both platforms.

http://cs76.tv/

Exposing Digital Photography
Instructor: Dan Armendariz

Photography has exploded in recent years as digital cameras have become affordable and easier to use. There are many courses that teach students the artistic aspect of “how to become a better photographer” or “how to improve your eye,” but this is not one of them. Instead, students—from one-time users to professionals—become better photographers through an understanding of the technical aspects and terms of a digital camera. Learn why photos look blurry at night, why color management is important, what the difference between sports mode and portrait mode on the camera’s dial is, and how to manipulate the camera without the need of these modes in the first place. Topics include exposure and metering, flash, dynamic range, CMOS and CCD sensors, color filter arrays, RAW versus JPEG formats, color spaces and profiles, editing photos with Photoshop, and optical and computational artifacts. Through lectures and hands-on assignments, students understand the jargon and compromises of digital photography that ultimately expose the workings of digital cameras. You are not required to own a digital camera, but if you do, one with a manual mode and an option for RAW is recommended.

http://tv.cse7.org/

Understanding Computers and the Internet
Instructor: David J. Malan

This course is all about understanding: understanding what’s going on inside your computer when you flip on the switch, why tech support has you constantly rebooting your computer, how everything you do on the Internet can be watched by others, and how your computer can become infected with a worm just by turning it on. In this course we demystify computers and the Internet, along with their jargon, so that students understand not only what they can do with each but also how it all works and why. Students leave this course armed with a new vocabulary and equipped for further exploration of computers and the Internet. Topics include hardware, software, the Internet, multimedia, security, website development, programming, and dotcoms. Through optional hands-on sections and workshops, local students have opportunities to dissect as well as upgrade a computer with additional hardware, search the Internet more effectively, build a wireless network, create digital images, eradicate spyware, and design webpages. Problem sets offer online students similar opportunities. This course is designed both for those with little, if any, computer experience and for those who use a computer every day.

http://computerscience1.tv/

Coursera

A few other university are jumping on the open source education.  I haven’t gone through any of the course available at Coursera but this is worth a look at if you have some free time to learn something new.

https://www.coursera.org/

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s