1
CSC 413 - Software Development
1. Introduction to Software Development
1/27/2018
John Roberts
2
Overview
• Programming in the Large vs.
Programming in the Small
• Working with Existing
Codebases
• Tools
• CSC 413 Prepares your for a
Job
3 Survey/interactive
Programming in the Large * How many have worked on an industry team/production project?
• Large programs/systems are hard to understand and very * How large (LOC, user base, team size, different metrics)
complex
*
• How do we organize our thoughts to understand and modify
these systems?
• How do we organize programming teams to develop
systems?
• What are the principles used to organize and manage large
systems?
• How do we analyze and design these systems? (OOA, OOD)
3
4
Overview
• Programming in the Large vs.
Programming in the Small
• Working with Existing
Codebases
• Tools
• CSC 413 Prepares your for a
Job
5
Working with Existing Code
• You will most likely study code that has been developed
by someone else so you can modify it - this may be
overwhelming
• Be patient
• Be confident that you can do it
• Know when and how to ask questions!
6
Overview
• Programming in the Large vs.
Programming in the Small
• Working with Existing
Codebases
• Tools
• CSC 413 Prepares your for a
Job
6
7 You will get experience with each of these tools, time permitting (including
Tools writing your own manuals/documentation for projects you submit)
• What tools do we use to study the code?
• Debuggers and documentation
• Communication with co-workers
• Text from school (data structures, network programming, operations
systems, etc.)
• The Web (google is your friend)
• Manuals
• Understand coding conventions and principles
• Code profilers to study the efficiency of the components
7
8 Link goes to: https://netbeans.org/
IDE
• Netbeans is a popular Java IDE - make sure you have the
latest Java SDK
• I downloaded the “All” version, but you should be fine with
“Java SE” version (and can always add packs as needed)
9
Netbeans
• Homework (ungraded but important): Ensure you have
downloaded the Netbeans IDE (or another Java IDE you
are comfortable with), and explored some of its features -
familiarize yourself with your toolset!! Customize your
toolset!!
9
10
Netbeans - Try a Sample Project - Anagram
10
11
Netbeans - Try a Sample Project - Anagram
• Explore file structure - think about why files are arranged
the way they are
• Build and run the project
• Play with the code - make some changes (it’s OK to
break things to learn about them!)
11
12
Netbeans - Try a Sample Project - Anagram
• Use the debugger
• Set some breakpoints
12
13 Stop, Pause, Continue, Step Over, Step Over Expression, Step Into, Step Out,
Netbeans - Try a Sample Project - Anagram Run to Cursor
• Use the debugger
• Step through the code
13
14 Added idx here, value updates as we step through the code
Netbeans - Try a Sample Project - Anagram
• Use the debugger
• Set some watches
14
15 Demo git init, git commit, git branch, git checkout for now
Github
• Distributed version control
• Keeps a history of your code changes - commits
• Can revert to a previous version (commit)
• Can create a workspace that allows you to experiment without affecting
working code
• Create a free account! (Students can get some free private repositories as
well)
• Please note that public repositories for assignments will be considered
code sharing (i.e. cheating) - private repositories will be created for your
assignments, and these must be used (assuming github gives them to me)!
15
16
Overview
• Programming in the Large vs.
Programming in the Small
• Working with Existing
Codebases
• Tools
• CSC 413 Prepares your for a
Job
16
17
How will CSC 413 help prepare for your job?
• You will study the foundation principles of OOP that are
used to produce flexible, robust, re-usable, modifiable,
quality software
• You will study Java - a powerful language and
environment that provides the mechanism for delivering
state of the art applications in a distributed,
heterogeneous (web-based) environment
17
18
How will CSC 413 help prepare for your job?
• You will study a compiler for a block structured language
written in Java
• It’s a large program with code that illustrates the use of
the important OOP principles covered in the course
• It’s a large program so you will be confronted with the
task of understanding the system
18
19
How will CSC 413 help prepare for your job?
• You will modify components of the compiler
• Fix bugs
• Extend the system
19
20
How will CSC 413 help prepare for your job?
• You will build two large systems (games) in a team, and
present to the class
• Please note that teamwork is not optional - if you
would like to avoid working in a team, this is not the
course for you!
20