Software Design and Implementation - or, how to be a hacker
|
|
|
- Damian Miles
- 9 years ago
- Views:
Transcription
1 Computer Science 50 Software Design and Implementation - or, how to be a hacker In what follows, we discuss the course overview, grading, books, weekly schedule, laboratory assignments, group projects and class reading. Course Overview "How can I really call myself a CS major and not be a hacker?" - CS50 is your answer. The ORC: Techniques for building large, reliable, maintainable, and understandable software systems. Topics include UNIX tools and filters, programming in C, software testing, debugging, and teamwork in software development. Concepts are reinforced through a small number of medium-scale programs and one team-programming project. More specifically: The course teaches Linux, C and shell programming, the use of GNU development tools (gcc, gdb, make, valgrind, gprofile, cvs) and design and implementation techniques. As part of the course you will design and implement the TinySearchEngine as part of a series of programming assignments - then you can take on google! The course includes a group project based on programming embedded Linux robots. You will also be exposed to thread, socket and embedded systems programming. Note, there is a significant amount of programming in this course requiring a significant time commitment on the part of the student. The course breaks down into seven/eight weeks of lectures and labs with the remaining time held over for group projects. The projects will be organized around a design review, code review and demo or die event. Something similar to what you would experience in the software industry when you have to ship a beta. What you will learn Some Linux, bash shell programming, C programming, programming tools, how to design, implement and debug a complex software system by working together in small groups. We hope that the skills and experience gained will reflect what you would expect in the software industry when working in small teams. The two main programming challenges are the TinySearchEngine specifically developed for this Dartmouth CS class - which represents a complex standalone software system - and real-time distributed client/server programming using the robots. You will learn about real-time distributed programming issues: you will programming embedded Linux robots (the Garcia below) and learn about the sensors that the robot interacts with as it roams around Sudikoff on a treasure hunt, searching for what? Yes, we like to race robots in Sudikoff. This is a fun, exciting but challenging class. Note, there are no midterm or final exams - just design, programming, and a lot of debugging; you will learn all about segfaults, memory leaks, and core dumps. Also, we don't use any fancy IDEs (e.g., the popular Eclipse integrated development environment) in this class - everything is on the command line. We expose details to gain knowledge rather than promote abstraction. In brief, C50 is the class I never had as an undergrad - it's a crash course in design, C/Unix programming, process/threads, GNU tools, socket programming and the implementation of complex standalone and embedded software systems - it's a course where you will write approximately 3000 lines of C and 500 lines of bash script for the programming assignments and1000 lines for the joint project; as a result, you will gain tangible programming skills; it will turn you into a systems hacker or your money back!
2 Grading 75% - oratory exercises There are 7 weekly laboratory assignments over the first 8 weeks. These labs are designed to help you learn the languages, tools, and design skills you will need for your final project. Only six labs are graded. Some labs are harder than others and we grade as shown below. These assignments are to be done individually. The schedule is online - plan a head. You need to be organized to get through the labs and stay on schedule. 0% 1 - Shell Commands (Not graded) 10% 2 - Shell Programming 10% 3 - C Programming 15% 4 - Crawler 15% 5 - Indexer 15% 6 - Query Engine 10% 7 - Socket Programming We will provide source code solutions to all labs. The TAs/section leaders will grade your solutions and write up a grade sheet on the correctness, simplicity, and clarity of your code. The instructor will review the TA's grading and grade sheets. Your grade and grade sheet and our source code solution will put in your svn repository (which is an open-source revision control system) one week after the lab assignment is turned in. If you have questions about the grade or grade sheet please talk to the TA/section leader first. If you are still have concerns see the instructor. Please do not distribute the source code solutions we provide you with (see honor code). 25% - Team project The project is made up of a small team (three or four people) and requires strong collaboration and a problem solving mindset to get the job done. The instructor will put the teams together with each member being responsible to deliver against a part of the overall system design, implementation, testing and integration. The goals of this activity are to help you develop the confidence, skills, and habits necessary to write large computer programs while part of a multiperson team. You will become conversant in software engineering paradigms, and be exposed to various public-domain and open source tools that make the software development process easier. In addition, you will develop vital skills in self-directed learning, problem solving, and communication. The project will have a design and code review as well as the demo. A project report that captures the design and implementation will be submitted as part of the assessment. Books There is no one book that caters for the material in the course. However, we do recommend a book on the C language - this is a very good book: A First Book of ANSI C, Fourth Edition by Gary J. Bronson We do not recommend you buy any other books for the course. But If I were to recommend a book on design and programming for Unix and C it would be this classic text: The Practice of Programming (Addison-Wesley Professional Computing Series) by Brian W. Kernighan, Rob Pike
3 If I where to recommend a hands on book on Linux and shell programming it would be this one (lots of good stuff in this): A Practical Guide to Linux Commands, Editors, and Shell Programming by Mark G. Sobell Another really good book covering, debugging, processes, threads, and socket programming in clear and easy manner to grasp: Beginning Linux Programming, 4th Edition by Neil Matthew, Richard Stones Just to make things clear. Buy the ANSI C book for the course. But if you are interested in hacking C, shell scripts, Linux you might like the other books for your library. They are all really nice books I love them. Schedule We plan to use all x-hour periods for demos, recitations, quizzes and project tutorials and lectures. Note, all x-hour periods will be in Sudikoff 01. The last two weeks of the course are held over for group projects - there will be no lectures during this period but there will be group design reviews and code reviews. See the schedule below. Week 1 Lecture 1 Lecture 2 Lecture 3 Week 2 Lecture 4 Lecture 5 Lecture 6 Lecture 7 Week 3 Lecture 8 Lecture 9 Lecture 10 Lecture 11 Week 4 Lecture 12 Lecture 13 Lecture 14 Lecture 15 Week 5 Lecture 16 Lecture 17 Lecture 18 Week 6 Lecture 19 Lecture 20 Getting Started The Linux Shell and Commands Work through "Getting Started" lecture notes, demo of Garcia robot The Linux Shell and Commands (continued) Shell Programming Shell Programming (continued) Shell Programming (continued) The C Programming Language Preprocessor, Functions, Data Structures, Arrays and Strings Standard IO Lib and C/OS Interface - Oh and bad IO too! Pesky Pointers Pesky Pointers and Dynamic Memory Allocation Searching the Web and Design Methodology TinySearch Engine: Crawler Design TinySearch Engine: Crawler Data Structure Design and The Make Utility TinySearch Engine: Indexer Design The Art of Debugging Pizza and Pointers The Art of Testing (and Writing Good Code) The Art of Testing: Unit Testing (A comment on the design of the query engine) Building your very own C library
4 Lecture 21 Week 7 Lecture 22 Lecture 50 Concurrent Versions System (CVS) - source code management Socket Programming Processes, threads, mutex PROJECT: Garcia Tutorial Part I PROJECT: Garcia Tutorial Part II PROJECT: GTK Tutorial Week 8 No classes: group project work Design Review Week 9 No classes: group project work Code Review Week 10 No classes: group project work Demo or die day Assignments Typically, labs are given out after the lecture on Monday and are returned the following Sunday at hours. s are graded and returned one week later. Each student is given two free passes for 48 hour extensions with no penalty. But you do not want to use these if possible since you will fall behind. 1 - Shell Commands 2 - Shell Programming 3 - C Programming 4 - Crawler 5 - Indexer 6 - Query Engine 7 - Socket Programming s 4-6 are the TinySearchEngine set. You will code the crawler and indexer. We will design these components in class together. You will do the design for the query engine and code it. Then you will put all three components together and you'll have your TinySearchEngine. Now you are ready to take on Google! This is an extremely cool set of assignments. It is, however, very challenging but you will learn how to design, implement, test and debug a complex software system. You will gain significant coding chops doing this. It will be painful but we promise you will get there. You will write a lot of C code in this course: approximately 500 lines of bash scripts and 3000 lines of C for the assignments and 1000 lines for the joint project - these are counts of C code, excluding comments. Note, there is some code reuse/ refactoring between the TinySearchEngine set of labs. 2 (Shell): (C): (Crawler): (Indexer): (Query Engine): (Sockets): 389 Project: 1063
5 Group Project There are no lectures during the last two weeks of the course. During this time you will be working in teams programming Gracia robots. The project will pull on all the skills you have developed so far but will provide a set of new skills needed to do cross development and embedded systems programming and debugging. This completes the hacker s toolkit that you can be proud of. We will do distributed programming using sockets, mutable threads for embedded Linux. We have added a mote sensor to the bot that allows it to interact with a sensor network built across the CS department. We have also added a camera to the bot. You will write the controller that runs on your laptop and the server side on the robot - all in C and Linux. Once your ready your bot will go on a treasure hunt. The final task is the CS50 remote controlled bot race. The project is made up of a small team (three or four people) and requires strong collaboration and a problem solving mindset to get the job done. The instructor will put the teams together with each member being responsible to deliver against a part of the overall system design, implementation, testing and integration. The goals of this activity are to help you develop the confidence, skills, and habits necessary to write large computer programs while part of a multi-person team. You will become conversant in software engineering paradigms, and be exposed to various public-domain and open source tools that make the software development process easier. In addition, you will develop vital skills in self-directed learning, problem solving, and communication. The project will have a design and code review as well as the demo. A project report that captures the design and implementation will be submitted as part of the assessment. The report should be 10 pages max: include 1) Thread design of client and server 2) Design Specs 3) Implementation Specs 4) GUI screen dump 5) Lesson learned The project potion of the course grade is large: 30% of the overall grade. We give the same grade for the project to all members of a team unless it is clear that people aren't equally pulling their weight. There has not been a year when we didn't give the same grade to all members of a team. The following set of deadlines are important for the progress of the project. Please note that you need to provide documentation for the design and code reviews and the final project submission. Design review. The project review should include requirements, Design Spec (inputs/outputs, data flow, data structures, pseudo-code) and functional decomposition. We are particularly interested in how the functions map to threads on the client (Unix machine/laptop) and server (bot); we will discuss the threaded design in the review. We are also interested in who is doing what. Code review. The code review should include the Implementation Spec and whatever code is written up until the review point. Demo or die day. Project presentation (design overview, lessons learnt, etc) and demo of project. Project reports due. The report written in latex includes description of the project, the Design Spec, functional decomposition of the system, Implementation Spec, lessons learnt. The
6 appendix includes all code and unit tests. All materials should be signed into the teams cvs project page. Class Reading Throughout the course we will read a number of articles that relate to programming and the software development cycle. Most will be anecdotal based on experience working in the software industry and others more academic. Please read them and come armed with thoughts, opinions, and questions. I like these articles for a number of reasons: they are insightful, sometimes funny, always opinionated and reflect real world experience - whether you like that or not. Week 1 -The Tale of J. Random Newbie (2 pages), chapter 16, section 1 of The Art of Unix Programming, Eric S. Raymond. -Biculturalism, (3 pages), Joel Spolsky Week 2 -The Joel Test: 12 Steps to Better Code, (9 pages), Joel Spolsky -Philosophy (15 pages), chapter 1 of The Art of Unix Programming, by Eric S. Raymond. Week 3 -The Perils of JavaSchools, (6 pages), Joel Spolsky Week 4 -Searching the Web, ACM Transactions on Internet Technology (TOIT), Volume 1, (39 pages), Issue 1 (August 2001), Arvind Arasu, Junghoo Cho, Hector Garcia-Molina, Andreas Paepcke, Sriram Raghavan (Stanford University) Week 5 - Craftsmanship, (4 pages), Joel Spolsky - Painless Functional Specifications - Part 1: Why Bother?, (6 pages), Joel Spolsky Week 6 -Things You Should Never Do, Part I, (5 pages), Joel Spolsky -Painless Functional Specifications - Part 2: What's a Spec?, (4 pages), Joel Spolsky Week 7 - Fire And Motion, (5 pages), Joel Spolsky
Testing for Security
Testing for Security Kenneth Ingham September 29, 2009 1 Course overview The threat that security breaches present to your products and ultimately your customer base can be significant. This course is
CIS 3515 Mobile Application Development Instructor:
CIS 3515 Mobile Application Development Instructor: Karl Morris Email: karl.morris [-] temple.edu Location: SERC 327 Office hours: T 9:30 AM - 10:30 AM, 2:00 PM - 3:00 PM or by appointment Textbook: None
CMSC 10600 Fundamentals of Computer Programming II (C++)
CMSC 10600 Fundamentals of Computer Programming II (C++) Department of Computer Science University of Chicago Winter 2011 Quarter Dates: January 3 through March 19, 2011 Lectures: TuTh 12:00-13:20 in Ryerson
Introduction to Programming System Design. CSCI 455x (4 Units)
Introduction to Programming System Design CSCI 455x (4 Units) Description This course covers programming in Java and C++. Topics include review of basic programming concepts such as control structures,
CS 300 Data Structures Syllabus - Fall 2014
CS 300 Data Structures Syllabus - Fall 2014 Catalog Description Data structures are fundamental to advanced, efficient programming. Topics including asymptotic analysis, stacks, queues, linked lists, trees,
CS 253: Intro to Systems Programming
CS 253: Intro to Systems Programming Spring 2014 Amit Jain, Shane Panter, Marissa Schmidt Department of Computer Science College of Engineering Boise State University Logistics Instructor: Amit Jain http://cs.boisestate.edu/~amit
Monitoring, Tracing, Debugging (Under Construction)
Monitoring, Tracing, Debugging (Under Construction) I was already tempted to drop this topic from my lecture on operating systems when I found Stephan Siemen's article "Top Speed" in Linux World 10/2003.
Workshop on Android and Applications Development
Workshop on Android and Applications Development Duration: 2 Days (8 hrs/day) Introduction: With over one billion devices activated, Android is an exciting space to make apps to help you communicate, organize,
Fundamentals of Computer Programming CS 101 (3 Units)
Fundamentals of Computer Programming CS 101 (3 Units) Overview This course introduces students to the field of computer science and engineering. An overview of the disciplines within computer science such
IT 342 Operating Systems Fundamentals Fall 2014 Syllabus
Tuesday 7:20 to 10:00 Bull Run Hall Room 258 James F. Holdener, P.E. Phone: 703 983-2343 (I check this number daily during the week) Email: [email protected] Email is the best method to get hold of me.
EECS 678: Introduction to Operating Systems
EECS 678: Introduction to Operating Systems 1 About Me Heechul Yun, Assistant Prof., Dept. of EECS Office: 3040 Eaton, 236 Nichols Email: [email protected] Research Areas Operating systems and architecture
Programming Languages
CS 345 Programming Languages Vitaly Shmatikov http://www.cs.utexas.edu/~shmat/courses/cs345/ slide 1 Course Personnel Instructor: Vitaly Shmatikov Office: CSA 1.114 Office hours: Tuesday, 3:30-4:30pm (after
Writing and Rhetoric 305: Travel Writing Spring 2013
Writing and Rhetoric 305: Travel Writing Spring 2013 View of [Sonoran]Desert. Source: http://www.flickr.com/photos/greenschist/2453841878/ Email: [email protected] (best way to reach me) Welcome! Welcome
McMaster University Department of Economics Economics 2GG3 Intermediate Microeconomics II Spring, 2016
McMaster University Department of Economics Economics 2GG3 Intermediate Microeconomics II Spring, 2016 Instructor: Dr. Robert Jefferson Office: KTH 406 E-mail: [email protected] Office Hours: Mondays,
Overview of CS 282 & Android
Overview of CS 282 & Android Douglas C. Schmidt [email protected] www.dre.vanderbilt.edu/~schmidt Institute for Software Integrated Systems Vanderbilt University Nashville, Tennessee, USA CS 282
CSC 314: Operating Systems Spring 2005
CSC 314: Operating Systems Spring 2005 Instructor: Lori Carter [email protected] (619) 849-2352 Office hours: MWF TTh 11:00 a.m. 12:00 p.m. 1:15 2:15 p.m 10:00-11:30 a.m. Texts: Silbershatz et.al, Operating
Course Descriptions. CS 101 Intro to Computer Science
Course Descriptions CS 101 Intro to Computer Science An introduction to computer science concepts and the role of computers in society. Topics include the history of computing, computer hardware, operating
Enhanced Project Management for Embedded C/C++ Programming using Software Components
Enhanced Project Management for Embedded C/C++ Programming using Software Components Evgueni Driouk Principal Software Engineer MCU Development Tools 1 Outline Introduction Challenges of embedded software
CSE 4415 / SWE 5415 Software Testing 2 Fall 2004 Olin Engineering Building, Room 128 Credits: 3.00
CSE 4415 / SWE 5415 Software Testing 2 Fall 2004 Olin Engineering Building, Room 128 Credits: 3.00 SOFTWARE TESTING 2. (Catalog description) Explores structural (glass box) methods for testing software.
Firewall Builder Architecture Overview
Firewall Builder Architecture Overview Vadim Zaliva Vadim Kurland Abstract This document gives brief, high level overview of existing Firewall Builder architecture.
Becoming a Pilot. Questions Answered by a Professional Pilot.
Becoming a Pilot. Questions Answered by a Professional Pilot. By Mario Sabogal Introduction My name is Mario Sabogal, and I am a professional pilot. I have worked as a pilot in various corners of the aviation
C Programming Review & Productivity Tools
Review & Productivity Tools Giovanni Agosta Piattaforme Software per la Rete Modulo 2 Outline Preliminaries 1 Preliminaries 2 Function Pointers Variadic Functions 3 Build Automation Code Versioning 4 Preliminaries
Undergraduate Course Syllabus
College of Software Engineering Undergraduate Course Syllabus Course ID 311006040 Course Name Operating System Course Attribute Compulsory Selective Course Language English Chinese Credit Hour 4 Period
Reminders. Lab opens from today. Many students want to use the extra I/O pins on
Reminders Lab opens from today Wednesday 4:00-5:30pm, Friday 1:00-2:30pm Location: MK228 Each student checks out one sensor mote for your Lab 1 The TA will be there to help your lab work Many students
COS 333: Advanced Programming Techniques
COS 333: Advanced Programming Techniques How to find me bwk@cs, www.cs.princeton.edu/~bwk 311 CS Building 609-258-2089 (but email is always better) TA's: Stephen Beard, Chris Monsanto, Srinivas Narayana,
TNM093 Practical Data Visualization and Virtual Reality Laboratory Platform
October 6, 2015 1 Introduction The laboratory exercises in this course are to be conducted in an environment that might not be familiar to many of you. It is based on open source software. We use an open
Get the Better of Memory Leaks with Valgrind Whitepaper
WHITE PAPER Get the Better of Memory Leaks with Valgrind Whitepaper Memory leaks can cause problems and bugs in software which can be hard to detect. In this article we will discuss techniques and tools
How To Understand And Understand An Operating System In C Programming
ELEC 377 Operating Systems Thomas R. Dean Instructor Tom Dean Office:! WLH 421 Email:! [email protected] Hours:! Wed 14:30 16:00 (Tentative)! and by appointment! 6 years industrial experience ECE Rep
Introduction to the course, Eclipse and Python
As you arrive: 1. Start up your computer and plug it in. 2. Log into Angel and go to CSSE 120. Do the Attendance Widget the PIN is on the board. 3. Go to the Course Schedule web page. Open the Slides for
CS 1301 Homework 6 Scribbler Line Sensing Due: Friday March 13th, before 11:55pm PM EST. Out of 130 points Files to submit:
CS 1301 Homework 6 Scribbler Line Sensing Due: Friday March 13th, before 11:55pm PM EST. Out of 130 points Files to submit: hw6.py For Help: - TA Helpdesk Schedule posted on class website. - Email TAs
CS 170 Java Programming 1. Welcome to CS 170. All about CS 170 The CS 170 Online Materials Java Mechanics: Your First Program
CS 170 Java Programming 1 Welcome to CS 170 All about CS 170 The CS 170 Online Materials Java Mechanics: Your First Program What s the Plan? Topic I: What s CS 170 All About? Contact information Topics,
Lab 2 : Basic File Server. Introduction
Lab 2 : Basic File Server Introduction In this lab, you will start your file system implementation by getting the following FUSE operations to work: CREATE/MKNOD, LOOKUP, and READDIR SETATTR, WRITE and
Introduction. General Course Information. Perspectives of the Computer. General Course Information (cont.) Operating Systems 1/12/2005
Introduction CS 256/456 Dept. of Computer Science, University of Rochester General Course Information Instructor: Kai Shen ([email protected]) TA: Kirk Kelsey ([email protected]) TA: Christopher
Igniting young minds through computer programming
Igniting young minds through computer programming igniting young minds W riting computer programs is a challenging, yet extremely satisfying personal experience that develops essential skills in logic,
ECE 297 Design and Communication. Course Syllabus, January 2015
ECE 297 Design and Communication Course Syllabus, January 2015 Lecturers and Office Hours: Design Communication Lecturer Vaughn Betz Ken Tallman Office Location 311 Engineering Annex Sanford Fleming, SF
PROGRAMMING FOR BIOLOGISTS. BIOL 6297 Monday, Wednesday 10 am -12 pm
PROGRAMMING FOR BIOLOGISTS BIOL 6297 Monday, Wednesday 10 am -12 pm Tomorrow is Ada Lovelace Day Ada Lovelace was the first person to write a computer program Today s Lecture Overview of the course Philosophy
Chapter 1: Getting Started
Chapter 1: Getting Started Every journey begins with a single step, and in ours it's getting to the point where you can compile, link, run, and debug C++ programs. This depends on what operating system
Geography 676 Web Spatial Database Development and Programming
Geography 676 Web Spatial Database Development and Programming Instructor: Prof. Qunying Huang Office: 426 Science Hall Tel: 608-890-4946 E-mail: [email protected] Office Hours: T, R, and F 1:00-2:00 PM
Next Generation Tech-Talk. Cloud Based Business Collaboration with Cisco Spark
Next Generation Tech-Talk Cloud Based Business Collaboration with Cisco Spark 2 [music] 00:06 Phil Calzadilla: Hello, hello! Welcome. This is Phil Calzadilla founder and CEO of NextNet Partners, and I'd
CIS 4301 - Information and Database Systems I. Course Syllabus Spring 2015
CIS 4301 - Information and Database Systems I 1. General Info Credits: Three Section: 7776 Prerequisite: CIS 3020 or CIS 3023, COT 3100 Instructor: Prof. Daisy Zhe Wang Meeting Times: M W F 9:35AM to 10:25AM
A Tool for Evaluation and Optimization of Web Application Performance
A Tool for Evaluation and Optimization of Web Application Performance Tomáš Černý 1 [email protected] Michael J. Donahoo 2 [email protected] Abstract: One of the main goals of web application
CSE 265: System and Network Administration. CSE 265: System and Network Administration
CSE 265: System and Network Administration WF 9:10-10:00am Packard 258 M 9:10-11:00am Packard 112 http://www.cse.lehigh.edu/~brian/course/sysadmin/ Find syllabus, lecture notes, readings, etc. Instructor:
1.00 Lecture 1. Course information Course staff (TA, instructor names on syllabus/faq): 2 instructors, 4 TAs, 2 Lab TAs, graders
1.00 Lecture 1 Course Overview Introduction to Java Reading for next time: Big Java: 1.1-1.7 Course information Course staff (TA, instructor names on syllabus/faq): 2 instructors, 4 TAs, 2 Lab TAs, graders
Multiplayer Game Programming ITP 484x (4 Units)
Multiplayer Game Programming ITP 484x (4 Units) Objective Concepts Prerequisite Lecture Lab Required Textbooks Interactivity is one of the most important features of a game, thus a solid understanding
Introduction to Information Technology ITP 101x (4 Units)
Objective Concepts Introduction to Information Technology ITP 101x (4 Units) Upon completing this course, students will: - Understand the fundamentals of information technology - Learn core concepts of
Version Control! Scenarios, Working with Git!
Version Control! Scenarios, Working with Git!! Scenario 1! You finished the assignment at home! VC 2 Scenario 1b! You finished the assignment at home! You get to York to submit and realize you did not
Big Data and Scripting
Big Data and Scripting 1, 2, Big Data and Scripting - abstract/organization contents introduction to Big Data and involved techniques schedule 2 lectures (Mon 1:30 pm, M628 and Thu 10 am F420) 2 tutorials
Canisius College Computer Science Department Computer Programming for Science CSC107 & CSC107L Fall 2014
Canisius College Computer Science Department Computer Programming for Science CSC107 & CSC107L Fall 2014 Class: Tuesdays and Thursdays, 10:00-11:15 in Science Hall 005 Lab: Tuesdays, 9:00-9:50 in Science
Introduction (Apps and the Android platform)
Introduction (Apps and the Android platform) CE881: Mobile and Social Application Programming Simon Lucas & Spyros Samothrakis January 13, 2015 1 / 38 1 2 3 4 2 / 38 Course Structure 10 weeks Each week:
A LOOK BACK: UNDERGRADUATE COMPUTER SCIENCE EDUCATION: A NEW CURRICULUM PHILOSOPHY & OVERVIEW
A LOOK BACK: UNDERGRADUATE COMPUTER SCIENCE EDUCATION: A NEW CURRICULUM PHILOSOPHY & OVERVIEW John C. Knight, Jane C. Prey, & Wm. A. Wulf Department of Computer Science University of Virginia ABSTRACT
Version Control. Luka Milovanov [email protected]
Version Control Luka Milovanov [email protected] Configuration Management Configuration management is the management of system change to software products Version management: consistent scheme of version
Basic info Course: CS 165 Accelerated Introduction to Computer Science Credits: 8 Instructor: Tim Alcon Email: timothy.alcon@oregonstate.
Basic info Course: CS 165 Accelerated Introduction to Computer Science Credits: 8 Instructor: Tim Alcon Email: [email protected] Two fundamental rules 1. You are responsible for knowing the
This material is intended for use by undergraduate students who are contemplating taking a course with me.
This material is intended for use by undergraduate students who are contemplating taking a course with me. I have pasted, without edits, all Section C comments from my recent online evaluations from SIRS
Finding and Preventing Cross- Site Request Forgery. Tom Gallagher Security Test Lead, Microsoft
Finding and Preventing Cross- Site Request Forgery Tom Gallagher Security Test Lead, Microsoft Agenda Quick reminder of how HTML forms work How cross-site request forgery (CSRF) attack works Obstacles
ECE 458 Engineering Software for Maintainability
ECE 458 Engineering Software for Maintainability Intro 1 Welcome! Welcome to ECE 458: Engineering Software for Maintainability Your Senior Design Course! Quick introductions: Please feel free to just call
3 - Lift with Monitors
3 - Lift with Monitors TSEA81 - Computer Engineering and Real-time Systems This document is released - 2015-11-24 version 1.4 Author - Ola Dahl, Andreas Ehliar Assignment - 3 - Lift with Monitors Introduction
Components of a Computing System. What is an Operating System? Resources. Abstract Resources. Goals of an OS. System Software
What is an Operating System? An operating system (OS) is a collection of software that acts as an intermediary between users and the computer hardware One can view an OS as a manager of system resources
Seattle Central Community College BITCA Division. Syllabus MIC 151 - Online
Seattle Central Community College BITCA Division Syllabus MIC 151 - Online 2016 Spring Course Title and Item Number: Web Design & Development with HTML / MIC 151 Number of Credits: 5 Lecture Hour Equivalent:
Rapid Application Development in GNOME... using Java!
Can you believe it? Rapid Application Development in GNOME... using Java! eclipse, glade, java-gnome, and gcj Andrew Frederick Cowie Ben Konrath GNOME Users And Developers European Conference 30 May 2004,
GDB Tutorial. A Walkthrough with Examples. CMSC 212 - Spring 2009. Last modified March 22, 2009. GDB Tutorial
A Walkthrough with Examples CMSC 212 - Spring 2009 Last modified March 22, 2009 What is gdb? GNU Debugger A debugger for several languages, including C and C++ It allows you to inspect what the program
INFSCI 1017 Implementation of Information Systems
INFSCI 1017 Implementation of Information Systems Time: Thursdays 6:00 8:30 Location: Information Science Building, Room 411 Instructor: Dmitriy Babichenko Office Hours: Tuesdays, 3-5PM Wednesday, 3-5PM
Introducing ZENworks 11 SP4. Experience Added Value and Improved Capabilities. Article. Article Reprint. www.novell.com. Endpoint Management
Introducing ZENworks 11 SP4 Experience Added Value and Improved Capabilities Article Article Reprint Endpoint Management Endpoint Management Article Introducing ZENworks 11 SP4 Addressing Key Usability
115 responses. Summary. How often do you use the official Moodle Mobile app?
Juan Leyva Edit this form 115 responses View all responses Publish analytics Summary How often do you use the official Moodle Mobile app? Never 29 25% Less than once a month 44 38% Monthly 18 16% Weekly
My Name Is Chris Curry... And I'd Like To Make
My Name Is Chris Curry... And I'd Like To Make A Confession I sold real estate the hard way for way too long. You see, I thought the key to improving my business was working harder. So I worked harder.
William Paterson University of New Jersey Department of Computer Science College of Science and Health Course Outline
William Paterson University of New Jersey Department of Computer Science College of Science and Health Course Outline 1. TITLE OF COURSE AND COURSE NUMBER: Object-Oriented Programming in Java, CIT 2420
Operating System Software
Operating System Software Lecture 7 The operating system Defines our computing experience. First software we see when we turn on the computer, and the last software we see when the computer is turned off.
CMS Query Suite. CS4440 Project Proposal. Chris Baker Michael Cook Soumo Gorai
CMS Query Suite CS4440 Project Proposal Chris Baker Michael Cook Soumo Gorai I) Motivation Relational databases are great places to efficiently store large amounts of information. However, information
Increasing software development productivity with reversible debugging
Increasing software development productivity with reversible debugging A white paper by Undo Software 1 Table of contents Table of contents 2 1. Management summary 3 1.1 The growing importance of debugging
Smartphone market share
Smartphone market share Gartner predicts that Apple s ios will remain the second biggest platform worldwide through 2014 despite its share deceasing slightly after 2011. Android will become the most popular
Distributed Version Control
Distributed Version Control Faisal Tameesh April 3 rd, 2015 Executive Summary Version control is a cornerstone of modern software development. As opposed to the centralized, client-server architecture
ECE 3803: Microprocessor System Design D Term 2011 Course Syllabus Department of Electrical and Computer Engineering Worcester Polytechnic Institute
ECE 3803: Microprocessor System Design D Term 2011 Course Department of Electrical and Computer Engineering Worcester Polytechnic Institute Instructor: Gene Bogdanov, AK020, [email protected], 508-831-6640
Gildart Haase School of Computer Sciences and Engineering
Gildart Haase School of Computer Sciences and Engineering Metropolitan Campus I. Course: CSCI 6638 Operating Systems Semester: Fall 2014 Contact Hours: 3 Credits: 3 Class Hours: W 10:00AM 12:30 PM DH1153
Network Security ITP 457 (4 Units)
Network Security ITP 457 (4 Units) Description Objectives Prerequisites/ Recommended Preparation Instructor Contacting the Instructor Lecture Required Textbooks Web Site Due to the emergence of the internet
Undergraduate Course Syllabus
College of Software Engineering Undergraduate Course Syllabus Course ID 31111230 Course Name Development Project for security product Course Attribute Compulsory Selective Course Language English Chinese
PHPM 631 Health Information Management Systems
PHPM 631 Health Information Management Systems Hye-Chung Kum Population Informatics Research Group http://research.tamhsc.edu/pinformatics/ http://pinformatics.web.unc.edu/ License: Health Information
CS 306/491-3 Linux Programming Spring 2015
CS 306/491-3 Linux Programming Spring 2015 MWF 3:00 3:50 p.m., Parkinson 108 See the course web page for more information and resources: http://www.cs.siu.edu/~cs306 Professor: Dr. Norman Carver, Faner
sftp - secure file transfer program - how to transfer files to and from nrs-labs
last modified: 2014-01-29 p. 1 CS 111 - useful details The purpose of this handout is to summarize several details you will need for this course: 1. sftp - how to transfer files to and from nrs-labs 2.
UCD School of Information and Library Studies. IS30020: Web Publishing. Draft
UCD School of Information and Library Studies IS30020: Web Publishing Draft Module Coordinator: Dr Judith Wusteman Office: SILS 110, Email: [email protected], Tel: 716 7612 Office hour Semester 2
Math: Study Skills, Note Taking Skills, And Test Taking Strategies
Math: Study Skills, Note Taking Skills, And Test Taking Strategies Math Study Skill Active Study vs. Passive Study Be actively involved in managing the learning process, the mathematics and your study
How to Pass Physics 212
How to Pass Physics 212 Physics is hard. It requires the development of good problem solving skills. It requires the use of math, which is also often difficult. Its major tenets are sometimes at odds with
15-441: Computer Networks Project 1: Internet Relay Chat (IRC) Server
15-441: Computer Networks Project 1: Internet Relay Chat (IRC) Server Lead TA: Daegun Won Assigned: January 21, 2010 Checkpoint 1 due: January 26, 2010 Checkpoint 2 due: February
Main Bullet #1 Main Bullet #2 Main Bullet #3
Main Bullet #1 Main Bullet #2 Main Bullet #3 : a bag of chips or all that? :A highlevelcrossplatformpowerfullyfunapplication andorsmallusefultooldevelopmentlanguage Why? Main Bullet #1 Main Bullet Vas
Computer Programming in Perl: Internet and Text Processing
Computer Programming in Perl: Internet and Text Processing Instructor: Dmitriy Genzel June 28 July 16 1 Course Description This course will teach you how to program in Perl, the programming language behind
Online Course Syllabus CS406/BA406 Managing Web Technologies. Important Notes:
Online Course Syllabus CS406/BA406 Managing Web Technologies Important Notes: This document provides an overview of expectations for this online course and is subject to change prior to the term start.
Syllabus INFO-GB-3322. Design and Development of Web and Mobile Applications (Especially for Start Ups)
Syllabus INFO-GB-3322 Design and Development of Web and Mobile Applications (Especially for Start Ups) Spring 2015 Stern School of Business Norman White, KMEC 8-88 Email: [email protected] Phone: 212-998
Running head: LESSONS LEARNED FROM A BEGINNING MATH COACH 1. Lessons Learned from a Beginning Math Coach. Susan Muir.
Running head: LESSONS LEARNED FROM A BEGINNING MATH COACH 1 Lessons Learned from a Beginning Math Coach Susan Muir K-4 Math Coach Good Spirit School Division LESSONS LEARNED FROM A BEGINNING MATH COACH
