SI502 covers a wide range of materials at an introductory level. The goal is to make sure that all the students have enough of an understanding about these topics to be prepared for the technical areas of the SI curriculum - and also to prepare students to continue learning about technology on their own in in future courses.
This just the draft set of topics for SI502 - this list may change as the course progresses.
Computer Architecture and Specs
- Be able to draw a block diagram and describe the purpose of the components of a modern desktop computer including the memory, cache-memory, long-tem storage, Central Processing Unit, network connection, and peripheral components of a computer
- Be able to look at and compare the specifications of different computers and answer questions about how computers with different specifications might be well-suited for particular tasks
Programming Skills
- Be able to write programs of up to 500 lines of code in a modern programming language - SI502 will use the Python Programming Language
- Understand the basic flows of programming âsequential steps, conditional execution, iteration, and modular software development using functions and/or objects
- Understand object oriented programming at a basic level - understand the advantages of object oriented programming and be able to look at a problem and identify what aspects of the problem will be well-represented by objects
- Understand string manipulation - including parsing of strings. Be able to write a program that reads a file, looking pulling apart each line in the file and finding data within those lines.
- Understand simple data structures including lists, arrays, and associative arrays (aka hash maps or dictionaries)
- Understand and be able to use the tools of software development including a compiler, interpreter, debugger, and integrated development environment
- Have a basic understanding of the factors which affect software performance
Software Development
- Explain the advantages and disadvantages of the waterfall process and iterative processes for product development
- Understand the notions of intellectual property around software including notions of Open Source and proprietary source software
Networking
- Understand the function and purpose of the low level protocols of the internet including: TCP, IP, and DNS
- Explain the function of Internet routers and the role of IP addresses
- Understand the -best effort- nature of IP service and its implications for applications.
- Understand how the DNS protocol works to map names to IP addresses
- Describe how you would get a particular name assigned to a computer you manage.
- Explain what a TCP port number is.
- e Architecture of the World-Wide Web
- Understand and be able to describe the functions of the web browser and web server.
- Explain how a web server can dynamically generate content
- Decipher a URL to determine the scheme, host, port, path, and arguments
- Understand how browsers and servers communicate with the HTTP protocol - understand the Request / Response Cycle
- Explain how cookies are used in browser-server interactions and what functions cookies provide in the stateless HTTP protocol
- Have a basic understanding of HTML and CSS. Understand the advantages of HTML+CSS over TABLES in layout and presentation in a web browser
- Understand the function of Javascript in the web browser
- Have a basic understanding of the AJAX approach to building web applications
Web Services and Data Formats
- Understand the difference between how a web browser views information on the Internet and how applications exchange information over the Internet
- Understand basic web services concepts including: serialization, SOAP/WSDL, and REST.
- Understand the performance impact of the use of web services - be able to know when web services may and may not be appropriate in the design of an application.
- Recognize and understand the purpose of common web data formats
- HTML
- CSS
- XML
- XML DTDs
- RSS
Building and Deploying Applications on the World-Wide Web
- Understand the steps to obtain your own hosting space to deploy an application on the world-wide-web
- Be able to develop a simple server-based application on the world-wide web In SI502 we will use the Google Application Engine and the Python language
- Understand the high level aspects of building an infrastructure to deploy a highly scalable web application
- Understand the concept of Cloud Computing like Google Application Engine or Amazon S3
Searching on the Internet
- Understand the basic approaches to searching on the Internet
- Understand how search engines work including how search engines spider the content, index the content and then respond to search requests online
- Understand different types of search engines and the strengths and weaknesses of different approaches to ranking search results
- Understand the concept of faceted search
- Have a basic understanding of what it takes to build high performance searching on the Internet
Databases
- Understand the basic functions of a database and the advantage of databases over simply storing all data in files
- Explain how related data can be stored in multiple tables, and the advantages of storing data in this way.
- Have a basic understanding of Entity Relationship Diagrams (ERD)
- Recognize a snippet of code as an SQL query - particular know the functions of the following SQL concepts: SELECT, DELETE, UPDATE, JOIN, and ORDER BY,
- Given a table structure - be able to construct a simple SQL query to pull data from the table.
Security and Cryptography
- Understand the difference between authentication and authorization
- Differentiate between symmetric (or secret-key) and asymmetric (or public-key) encryption systems, and recognize their respective strengths for encryption.
- Understand and explain how public-key encryption schemes are used for digital signatures and authentication. Explain how and why public keys are certified.
- Be aware of cryptography policy and its impact
- Learn what a one-way hash function is, and explain how it provides a way of ensuring integrity of messages.
- Recognize some common threats to security goals, as well as countermeasures that are taken. For a given threat scenario, recognize which of these countermeasures might be useful.
- Be able to describe and discuss the following security threats: Denial of Service, Replay Attack, or Cross-Site-Scripting Attack