Java程序辅导

C C++ Java Python Processing编程在线培训 程序编写 软件开发 视频讲解

客服在线QQ:2653320439 微信:ittutor Email:itutor@qq.com
wx: cjtutor
QQ: 2653320439
CSC207
Software Design
Fall 2016 Section L0301
Paul Gries
Software Design
“An introduction to software design and development 
concepts, methods, and tools using a statically-typed 
object-oriented programming language such as Java. 
Topics from: version control, unit testing, refactoring, 
object-oriented design and development, design 
patterns, advanced IDE usage, regular expressions, 
and reflection. Representation of floating-point 
numbers and introduction to numerical computation.”
— The Arts and Science Calendar
The Main Project
• You will incorporate the contents from lectures and 
labs into your assignments.
• The main project for this course is: develop a 
program that allows for finding, tagging, and 
renaming of image files to include the tags in the 
file names.
What we assume you 
already know
• CSC108, CSC148, and CSC165 material: lists, 
dictionaries, functions, classes, stacks, queues, 
trees, recursion, unit testing, logical notation and 
reasoning, the basics of computational complexity 
(big-Oh), and an approach to developing functions 
(the function design recipe).
What we want you to learn
Fundamental code development 
techniques used professionally
• version control (using git)
• aspects of team dynamics
• design patterns
• tools for designing and 
analyzing programs
• a large Integrated Development 
Environment (Eclipse)
• the Linux command line
Object-oriented programming 
(using Java)
• strong typing
• lots of inheritance
• more unit testing
• a memory model for Java
• exception handling
• floating-point issues
How we’re going to teach
2 lecture hours / week
7 1-hour labs
2 45-minute midterms (in lecture room, but at lab time, bring 
your TCard!)
2 individual assignments
2 pair assignments (no teams of 4, unlike in previous 
offerings)
1 final exam
Labs next week
Because of wildly fluctuating enrolments, we will send 
an announcement about your Friday lab room on 
Wednesday next week.
The lab rooms are BA2200, BA3175, BA3185, and 
BA3195.
Eclipse, Java, and Git install fest!
Monday 4–6pm in SS2117
Leo Ufimtsev earned a UofT CS degree.
He now works as a software engineer at Red Hat, a 
Linux company.
Eclipse, Java, and Git can be a bit overwhelming at first, 
and installation can be a headache.  Come see a demo 
from Leo about working with Eclipse, Java, and Git, and 
get hands-on help with issues you are having!
What do companies want?
One way to help your learn: 
Recognized Study Groups
By joining or coordinating a study group, you will:
• Guarantee regular study time
• Gain motivation and understanding
• Meet your peers
• Get quick access resources and supports
• Receive Co-Curricular credit for participating and 
leading
Visit http://studygroups.artsci.utoronto.ca
Marking scheme
Resources
Course website (readings, links)
Discussion board
Office hours (see syllabus; you are encouraged to attend 
the office hours of all instructors, not just mine)
Lectures and labs!
Anonymous feedback: please give us constructive 
suggestions!
First topics of the course: the 
file system and version control
Two related issues:
• How to organize files (using your file system)
• In a multi-user environment, how to track and share 
changes (using a version control system)
You need to thoroughly understand your file system 
to understand version control.
Managing files
Your OS provides a view of your file system.
The Linux command line provides another equivalent 
view.
Some of this will seem really basic to many of you, 
but we want to make sure everyone understands the 
terminology we are going to use.
Tree Structure for File
System
Files and folders/directories on any server are arranged 
in a tree structure:
• Directories can contain some combination of:
• 0 or more files
• 0 or more directories
Moving Within the File 
System
• To access a particular file, you have to first 
navigate to the directory that directly contains that 
file (not contains a directory that contains a 
directory that contains the file)
• We do this by changing the current working 
directory to the next closest folder on the tree
We start at the root 
directory
We now have access to 
two files…
and the ability to open 
two directories:
To access this file, we 
need to first open…
This directory…
Which lets us open this 
directory…
Which then lets us open 
the file we want
A GUI vs. the command 
line
You are used to using a GUI such as the OS X 
Finder or Windows Explorer to navigate your file 
system.
There’s another way: using the Unix/Linux command 
line.
We’ll expect you to become familiar with the 
command line.  You’ll need it for Git, and CSC209H 
expects you to know how to use it.
Command line tutorial
Red Hat is a company that manages a Linux 
distribution. They have a tutorial that introduces the 
command line.
We suggest you start here. “Nautilus” is their 
graphical user interface; ignore it. Follow along 
through section 4.9.
https://access.redhat.com/documentation/en-
US/Red_Hat_Enterprise_Linux/4/html/Step_by_Step_
Guide/s1-managing-directories.html
Time spent on task
Assuming that being a full-time student is a full-time job, that 
means 8–10 hours/week on each of your courses. This includes 
week 1.
• Version control and Git:
https://www.atlassian.com/git/tutorials/what-is-version-
control
• Learning the command line:
https://access.redhat.com/documentation/en-
US/Red_Hat_Enterprise_Linux/4/html/Step_by_Step_Guid
e/s1-managing-directories.html
• Java from a Python perspective:
http://fpl.cs.depaul.edu/jriely/java4python/java4python.st
art.html