TA hours and labs start today. First lab is out and due next Wednesday, 1/31. Getting started lab is also out

Similar documents
Intro to Intro to Software Engineering

University of Maryland at College Park Department of Geographical Sciences GEOG 477/ GEOG777: Mobile GIS Development

ECE Object-Oriented Programming using C++ and Java

CS111: Intro to Computer Science

Lab 1: Setup 12:00 PM, Sep 10, 2017

CSC 443: Web Programming

CS 3110 Lecture 1 Course Overview

CSCI 1100L: Topics in Computing Lab Lab 1: Introduction to the Lab! Part I

Lecture 1: Overview

Programming with CUDA

Project 1 Balanced binary

Introduction to Computer Systems

CSE 333 Lecture 1 - Systems programming

CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims

Lecture 1. Course Overview Types & Expressions

CSCI 201L Syllabus Principles of Software Development Spring 2018

CSE 336. Introduction to Programming. for Electronic Commerce. Why You Need CSE336

The COS 333 Project. Robert M. Dondero, Ph.D. Princeton University

Lecture 1. Course Overview, Python Basics

CS240: Programming in C

Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

Data Structures and Algorithms

Welcome to CS 241 Systems Programming at Illinois

CS 3640: Introduction to Networks and Their Applications

Lecture 1. Course Overview, Python Basics

Boot Camp. Dave Eckhardt Bruce Maggs

Announcements. Course syllabus Tutorial/lab signup form (due 4pm today) Lecture 1 notes Homework 1 Initial assessment

15-411/ Compiler Design

Introduction to Nate Foster Spring 2018

Welcome to CS 241 Systems Programming at Illinois

CS61C Machine Structures. Lecture 3 Introduction to the C Programming Language. 1/23/2006 John Wawrzynek. www-inst.eecs.berkeley.

Lab 4: Imperative & Debugging 12:00 PM, Feb 14, 2018

61A LECTURE 1 FUNCTIONS, VALUES. Steven Tang and Eric Tzeng June 24, 2013

MCOM 6336 Digital Media Spring 2014

COMP 3500 Introduction to Operating Systems Project 5 Virtual Memory Manager

Announcements. 1. Forms to return today after class:

Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

Intermediate Programming Section 03 Introduction. Department of Computer Science Johns Hopkins University. Course Overview.

CSCI 1320 Creating Modern Web Applications

CS 241 Data Organization. August 21, 2018

CLIENT ONBOARDING PLAN & SCRIPT

CIS 101 Orientation Document Fall 2017

Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

Gearing Up for Development CS130(0)

CS354 gdb Tutorial Written by Chris Feilbach

CLIENT ONBOARDING PLAN & SCRIPT

CS 4349 Lecture August 21st, 2017

CS 326: Operating Systems. Lecture 1

EECS 394. Software Development. Communicating. Chris Riesbeck

Outline. Logistics. Logistics. Principles of Software (CSCI 2600) Spring Logistics csci2600/

CS 241 Data Organization using C

Mobile App:IT. Methods & Classes

Object-Oriented Programming CSCI-UA

Computer Science 210: Data Structures

CSCI 1100L: Topics in Computing Lab Lab 11: Programming with Scratch

San Jose State University - Department of Computer Science

INFSCI 1017 Implementation of Information Systems Spring 2017

Introduction to Programming System Design CSCI 455x (4 Units)

Close Your File Template

Homework 6: Higher-Order Procedures Due: 10:00 PM, Oct 17, 2017

What Are CSS and DHTML?

IT 220 Course Notes. Don Colton Brigham Young University Hawaii

CS 235AM, Mobile Application Development: Android Spring 2016

Project 1 Computer Science 2334 Spring 2016 This project is individual work. Each student must complete this assignment independently.

CSci Introduction to Operating Systems. Administrivia, Intro

Using Classes and Objects. Lecture 7. Midterms Save the Dates! Extra Credit Survey

Intro Winter Semester 2016/17

CMSC 201 Computer Science I for Majors

Unifer Documentation. Release V1.0. Matthew S

Lab 2: Object-Oriented Design 12:00 PM, Jan 31, 2018

INTERNET GIS. Course Overview. Schedule. Instructor. Lab Instructor. Prerequisites. Urban Planning 794 Monday s 5:30-8:10pm SARUP 158

Goals for this lecture. Lecture 4 Getting Started with ITK! Getting help. Assignments. Assignments, cont. Grading of assignments

Important Project Dates

Sixth lecture; classes, objects, reference operator.

CS31 Discussion 1E. Jie(Jay) Wang Week1 Sept. 30

CMSC433 - Programming Language Technologies and Paradigms. Introduction

Computer Science 1 Program 4 TA Lab (Stacks & Queues) Assigned: 3/2/11 Due: 3/23/11 (Wednesday) at 11:55pm (WebCourses time)

Important Project Dates

San José State University Department of Computer Science CS151, Section 04 Object Oriented Design Spring 2018

CPSC 213. Introduction to Computer Systems. About the Course. Course Policies. Reading. Introduction. Unit 0

Project #1 rev 2 Computer Science 2334 Fall 2013 This project is individual work. Each student must complete this assignment independently.

We re working full time this summer alongside 3 UCOSP (project course) students (2 from Waterloo: Mark Rada & Su Zhang, 1 from UofT: Angelo Maralit)

Lecture 1: CSE 373. Data Structures and Algorithms

CPSC 213. Introduction to Computer Systems. Introduction. Unit 0

CIS192: Python Programming

Welcome to... CS113: Introduction to C

Lecture 14: Exceptions 10:00 AM, Feb 26, 2018

CS120 Computer Science I. Instructor: Jia Song

today what is this course about? what is this course about? Welcome to CSC309! Programming on the Web APRIL 05

Introduction to CS. Welcome to CS 5! 1 handout. We don't have words strong enough to describe this class. Everyone will get out of this course a lot!

1: Introduction to Object (1)

COMP 117: Internet-scale Distributed Systems Lessons from the World Wide Web

Advanced Client-Side Web Programming CSCI 491/595 Syllabus Fall 2018

CS168 Programming Assignment 2: IP over UDP

Credit: The lecture slides are created based on previous lecture slides by Dan Zingaro.

Week - 01 Lecture - 04 Downloading and installing Python

Lecture 1b: Why C++?

CSCI Computer Networks

Computer Science Department

Tips from the experts: How to waste a lot of time on this assignment

Transcription:

Announcements TA hours and labs start today. First lab is out and due next Wednesday, 1/31. Getting started lab is also out Get you setup for project/lab work. We ll check it with the first lab. Stars is out and due in a little over 2 weeks (2/9 6pm) Gear-up session here (Metcalf Auditorium) Monday at 6:30pm 1/29 Brown CS town hall meeting today at 4pm in Atrium. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 1 / 1

Intro to Intro to Software Engineering John Jannotti /course/cs0320/www/lectures/ Jan 25, 2018 John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 2 / 1

Introductions John Jannotti (jj) Networking, Sightpath, Foodler CIT 449 (Hours: After class until around 6pm.) Tim Nelson (tn) Logic for Systems, cs18 HTAs Adam DeHovitz, Alex Jang, Joe Romano UTAs You ll meet them soon. See website for blurbs that may help you find the right mentor. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 3 / 1

CSCI0320 focus We focus mainly on Applications programming. CS33 focuses on Systems programming. We will spend most of our time on Writing correct, understandable, and extensible code. Building the right thing. You will make these decisions. Integrating and connecting subsystems. The class is designed to work with code bases over time. Projects work together. Your pair project will marry your code to another student s. Labs will evolve the Boggle project. Group project lots of code, several contributors, over time. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 4 / 1

Meetings Lectures (Metcalf Auditorium) Emphasis on design, we ll walk through many case studies. We time lectures to help with projects, honest. More emphasis on particpation this year. Tuesday & Thursday 1pm-2:20pm Project gear-up sessions. Labs Hands-on training you ll need for assignments. Significant to your grade. Communication via the web-site, Piazza Signup: piazza.com/brown/spring2018/cs32 Calendar and lectures slides will be available. You are responsible for everything posted. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 5 / 1

This course just keeps going... There is very little slack in the schedule. Start (even if only to read) assignments when they come out. Labs: Due in lab hours by due date or nothing. Lateness is penalized 20% / day. (We forgive your first two.) No credit at all after 48 hours, and yet... Every assignment must be turned in and working to pass! If you re not truly done 47.9 hours after the deadline, turn something in. Getting a zero on a project costs about one whole letter grade. You still need a passing grade. All working by semester end is a necessary, but not sufficient, condition for credit. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 6 / 1

Collaboration We have loosened some restrictions. You may discuss projects orally with other (current) 32 students. You may not look at each others code, or collaborate over a medium that allows direct sharing of others s words or code (email, IM). No photos, recordings, written notes. Take a break before coding after oral collaboration. We do use MOSS. It finds shared code. Please don t test it. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 7 / 1

Term Project Team project Four person teams. Project of your choice We let you choose, because we want it to matter to you. Some of you won t stop at the end of the course. You will learn the most from this, we can t guide you step-by-step. Concepts Pull together all your skills Software engineering, project management; software design We re intentionally starting a bit later this year. Ideas not due for a while. Pay attention in daily life. We encourage heterogeneous teams (wrt Intro Sequence) No web frameworks beyond Spark. No (native) mobile apps. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 8 / 1

Your illustrious TAs Let s meet your TAs. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 9 / 1

Software Engineering Software Engineering Programming Programming is often a surprisingly small part. What else? Determining what to build Requirements (what tasks should the Software accomplish?) Specifications (exact operating behavior) Determining how to build it (Design/Architecture) Testing (correctness and user experience) Debugging (functional and performance) Maintaining the program (new APIs, platforms, minor features) There are certainly dependencies, but not purely linear. Hopefully, software lifetime is mostly maintenance/enhancement. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 10 / 1

And the programming is different, too We re stressing certain aspects when we say, engineering. What do you think matters most when we talk about high-quality code? John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 11 / 1

Three first principles As you learn about software engineering you ll hear a lot of best practices, and rules of thumb or their opposite: code smells. While handy, at base we try to justify everything against three goals. Safe From Bugs (SFB) is your code likely to stay bug-free as it s changed? Easy To Understand (ETU) can someone read your code and know what s going on quickly, without false starts? Ready For Change (RFC) if new features are needed, are the needed changes likely to be straightforward? These goals are about code quality meeting requirements (including correctness and performance) is an external property, and also matters. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 12 / 1

Programming Languages Among equivalence classes language isn t so important Should be able to pick up new ones on your own. We ll teach universal concepts. But, how you use the language is important By necessity, we ll talk about language specific things. Others need to understand your code. Idioms vary from one language to another. We ll expect (and teach) you to write Java properly. Projects and lectures will all use Java (8) at their core. But the user interfaces will be webby - HTML, CSS, Javascript es6. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 13 / 1

Why Java? Easy to teach concepts. The interface mechanism is simple and powerful (often a better abstraction mechanism than inheritance). Encapsulation / Data-hiding support is excellent. Garbage Collection allows cleaner interfaces than C/C++ Static typing catches many mistakes at compile-time. Strong ecoystem IDEs and command-line tools widely available. Extensive libraries available. Common enough that you gain real-world experience. Fast enough for almost anything. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 14 / 1

Why Webby? User Interfaces are always a bit grungy. You might as well pick up reusable skills. HTML, CSS, and Javascript are reasonable Ecmascript, or es6, even more so. You ll learn at least half of what matters to modern web apps. The same separation applies to mobile apps. We ll be treating them as display technology., we won t worry about Users: Logins, Passwords, Multiple users Security: Cookies, XSS attacks, malicious clients Browser details: Back button, multiple windows, browser quirks. I ll spend a little time on them late, for the sake of projects. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 15 / 1

Java vs Javascript Almost the same name, and they look very similar. i n t n = 3 ; 1 l e t n = 3 ; w h i l e ( n!= 1) { 2 w h i l e ( n!= 1) { System. out. p r i n t l n ( n ) ; 3 c o n s o l e. l o g ( n ) ; i f ( n % 2 == 0) { 4 i f ( n % 2 == 0) { n = n / 2 ; 5 n = n / 2 ; } e l s e { 6 } e l s e { n = 3 n + 1 ; 7 n = 3 n + 1 ; } 8 } } System. out. p r i n t l n ( n ) ; 9 } 10 c o n s o l e. l o g ( n ) ; Awfully similar, right? What s different? Do you expect the same results for all n? John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 16 / 1

Messy interlude Let s have a look at what can go wrong. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 17 / 1

What went wrong? The programs used types in a way they were not intended. We may have imagined the values as representing abstract, mathematical numbers (integers). That wasn t true in either language, though it was untrue in different ways in each. To write high-quality programs you must not only understand the built-in types of a language, you will become skilled at creating new types. Back to Java vs Javascript: The biggest single difference is that Java has an explicit typing system that it checks at compile-time. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 18 / 1

Messier interlude Let s have a look at what else can go wrong, and how these languages tell us about the problem. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 19 / 1

Static Typing Static typing is a great benefit in meeting our three core goals. Safe from bugs. Catch type errors and other bugs before runtime. Easy to understand. Types are explicitly stated in the code. Ready for change. Identifies other places that need to change in tandem. Next week, I ll show you more tools and techniques to get similar benefits with static analysis of your code. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 20 / 1

Back to the code There s much more to writing code code than not having type errors. John Jannotti (cs32) Intro to Intro to Software Engineering Jan 25, 2018 21 / 1