Title: 810:053 Intermediate Computing Dr' Schafer
1810053Intermediate ComputingDr. Schafer
2Getting to know you
- Pull out a sheet of notebook paper and fold it in
half the long way . - Using one of the markers I will pass around,
write your first name and last initial (or the
name you would like to be called). - While I come around and take your mug shot
please begin to complete the info sheet that I
will pass out.
3What would be on my info sheet?
- Name Dr. Ben Schafer
- Hometown Ames originally.
- Class This is my 14th year at UNI (5 as a
student) - Previous programming experience? I probably use
Java and Python the most. - Why are you TEACHING this class? I truly enjoy
teaching the introductory classes and OOD - Other things about me you should know
- My handwriting can be messy
- My voice can get loud
- I am teaching with two different languages this
semester
4Getting Started
- I will hand you a syllabus.
- Please make sure you read it by Wednesday and
come prepared to ask questions. - But a few issues I want to highlight today.
5Important times and places
- Formal office hours
- MWF 11-1150 (ITTC 316)
- Th 1000-noon (ITTC 316)
- Having said that, I follow an open door policy
- Time and Place
- MWF 1200-1250 AM, ITTC 322
6Rooms you should know!
- ITTC 322 Lectures
- ITTC 305 The departmental office
- ITTC 316 My office
- ITTC 335 Small general purpose lab
- Wright 339 and Wright 112 Open-lab most days of
the week - Wright 206 CNS tech support
7Grading
8Scholastic Conduct
- I take scholastic conduct SERIOUSLY!
- You are responsible for being familiar with the
universitys Academic Ethics Policies
(http//www.uni.edu/pres/policies/301.shtml) and
my comments on scholastic conduct in my course. - General rule
- Discussing assignments is normally acceptable.
- Copying code or answers is not.
- First and foremost, your final submission for any
assignment should be your own individual,
original work unless otherwise specified.
9No Distractions!
- Cell phones (turn them OFF)
- Texting during class will result in a 0 for
attendance/participation - Computers and PDAs
10Guidelines for Success in this Course
- Prepare for lecture! Read the text selections
before the start of lecture and complete any
class prep assignment. - Be on time. Class sessions will start promptly at
1200. I will collect assignments at that time
and will often start with important
announcements. - Try things from the book. Although I may
sometimes use the book's activities in lectures,
you will gain more if you try them yourself on
your time and at your pace.
11Guidelines for Success in this Course
- Write code on your own! Think of simple problems
on your own (or from the text) and solve them.
If you wonder "what if," TRY IT! - Make use of the office hours early! Don't wait
until late in the term to seek help. - If you spend more than 15 minutes staring at the
computer stuck on something, ask for help! I am
frequently in my office, and there are TAs
available in the lab several hours a week. - Be specific in your questions when possible.
Rather than asking for an explanation of a large
or general topic, be prepared with specific
questions or specific examples that raised your
questions.
12Guidelines for Success in this Course
- Make sure that your code runs in the lab. This is
especially important for those who complete
portions of their work at home. Verify that code
that runs off campus actually runs in the lab so
there are no surprises at grading time. - Remember, programming takes practice.
13How is this course different from your
introductory sequence?
- CS I focuses on learning to code.
- How do I put sequences of commands together to
solve a problem? - Often focusing on procedural programming
- Often focusing on writing code at the
method/function level
14How is this course different from your
introductory sequence?
- CS II focuses on learning to deal with data.
- How do I use different data structures/types to
solve a problem - Probably introduced the concept of classes or
libraries without discussing much detail of class
design. - Even if you talked about classes, the discussion
was limited to small programs with a very
limited number of classes.
15How is this course different from your
introductory sequence?
- Intermediate Computing focuses on learning how to
write larger and more complex programs - How do I use this concept of an object oriented
language to craft complex yet flexible programs? - Going beyond just writing code, but writing
good code - Its also a BIT of an introduction to the concept
of software engineering.
16What will we cover this semester?
- The OO software development process
- OO Analysis and Design
- Modeling languages
- Software reuse
- Frameworks
- Design Patterns
- Testing and debugging
- Graphical User Interfaces (GUIs)
- Event-driven programming
- Networks and sockets
- Software Tools
- Oh, yeah and how to do it all in Java
17Introduction
- Coding represents 15 to 20 percent of time to
develop production software - Strategies for writing small programs are not
effective for large programs - Virtually all real-world software is at least
medium sized - Millions of lines of code
- Dozens of programmers
- Operating systems, database programs, e-commerce
applications
18Introduction (continued)
19The Challenges of Software Development
- Complexity How do you manage that much code?
- Longevity and Evolution Lots of companies still
working with and maintaining legacy code - High User Expectations End users are no longer
experts
20Managing these challenges
- The creation of a methodology to formally define
and organize the activities that are part of this
software development process - The term software engineering was first used in
the late 60s (but is still a hotly contested
term) No universal agreement on exact steps in
software development
21Managing these challenges
- Preparation required before writing code
- Specify the problem
- Design the overall structure of the solution
- Select and analyze algorithms and data structures
- After work completed
- Testing
- Documentation
- Support
- Maintenance
22The Software Life Cycle (continued)
- No universal agreement on exact steps in software
development - Software life cycle
- Problem specification
- Program design
- Selection of algorithms and data structures
- Coding and debugging
- Testing and verification
- Documentation and support
- Maintenance
23The Software Life Cycle (continued)
24(No Transcript)
25What are the goals of any software development
process?
- To produce a software system that is
- Useful
- Timely
- Reliable
- Maintainable
- Reusable
- User Friendly
- Efficient
26For next time
- Read the syllabus and come prepared to ask
questions - Read Chapter 1