COMP446_Fall_2011_Lecture_6x - Comp446.com

mangledcobwebΛογισμικό & κατασκευή λογ/κού

14 Δεκ 2013 (πριν από 3 χρόνια και 6 μήνες)

81 εμφανίσεις

Wednesday 2
-
4, DH 1046

COMP 446 / ELEC 446

Mobile Device Applications

Scott
Cutler

Professor in the Practice of Computer Technology

Department of Computer Science

Department of Electrical and Computer Engineering

cutler@rice.edu

9/28/11

Today’s Agenda


Events of the week


Final Project Schedule


Web Services
(abbreviated
)


Memory Management Summary Sheet


Controllers of Controllers, Gesture Recognizers


Review of current assignment


Next Week

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

2

Events of the Week


Apple holding iPhone 5 event on October
4


HP Ousts
Apotheker
, Names Whitman
CEO


Facebook's
Zuckerberg

unveils revamped profile:
Timeline


AT&T, T
-
Mobile Antitrust Case Set for Trial in February
2012


Amazon Kindle Book Loans Debut at 11,000
Libraries


Amazon Kindle Tablet Landing Sept. 28


Apple
slashes fourth
-
quarter iPad orders, report
says


Analysts dubious about iPad supply issues

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

3

COMP 446 Syllabus


8/24/11

Introduction / What makes mobile apps special


Videos:

Lecture 1. Introduction to Cocoa Touch, Objective
-
C, Tools, and MVC (September 21, 2010)



Lecture 2. Building a Simple Calculator (September 23, 2010)


Assignment:

#1 and #1 Walkthrough
-

Calculator


Due:

Preferably watch videos this week, definitely by 8/30. Assignment due 9/1/11
.



8/31/11

Discussion of first applications,
Development Environment


Videos:

Lecture 3. Objective
-
C and Foundation Frameworks (September 28, 2010)



Lecture 4. Foundation and Memory Management (September 30, 2010)


Assignment:

#2 Function Calculator (Due
9/15/11)



9/7/11

Intro to Cocoa Touch,
Objective
-
C,
Using Objective
-
C, Foundation framework


Videos:



Assignment
:




9/14/11

Memory Management


Videos:

Lecture 5. Protocols and Views (October 5, 2010)



Lecture 6. Application & View Controller Lifecycle, Navigation Controller (October 7, 2010)


Assignment:

#3 Graphing Calculator (Due
9/22/11
)



9/21/11

iPhone (pseudo) Web Apps
/
ASP.Net

/
Browser Capabilities


Videos:

Lecture 7. More Controllers of Controllers, iPad, Universal Applications (October 12, 2010)



Lecture 8. Gesture Recognizers (October 14, 2010)


Assignment:

#4 Universal Calculator (Due
9/29/11
)

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

4

COMP 446 Syllabus


9/28/11

Creating
and Consuming Web
Services


Videos:

Lecture 9. Image View, Web View, and Scroll View (October 19, 2010)



Lecture 10. Table View (October 21, 2010)


Assignment
:

#5 Pictures Places (Due
10/13/11)



10/5/11

SQL
101


Videos:

Lecture 11. Persistence (October 26, 2010)



Lecture 12. Core Data and Table Views (October 28, 2010)


Assignment:

#6 Core Data Places (Due 10/20/11, but watch lectures prior to 10/12/11 class
)



10/12/11

Final Project discussion and Pairing


Videos:

Debugging Tools (October 22, 2010)



Kleiner

Perkins
iFund

(October 15, 2010)


Assignment:

Final Project Proposal (Due 10/18/11 along with Core Data Places due 10/20/11
)



10/19/11

iOS

5


Videos:

Lecture 13. Blocks and Multithreading (November 2, 2010)



Lecture 14. Core Location and Map Kit (November 9, 2010)


Assignment:

Final Project, Stage 1 (Due 10/27/11
)



10/26/11

Android


Videos:

Lecture 15. Editable Text, Modal View Controllers, and View Animation (Nov 11, 2010)



Lecture 16. Core Motion, Segmented Control, and Alerts (November 16, 2010)


Assignment:

Advanced Feature App (Due 11/03/11)

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

5

COMP 446 Syllabus


11/2/11

Windows Phone 7, Final Project Prep


Videos:

Lecture 17. Media (November 18, 2010)



Lecture 18. Accessibility on
iOS
: Make an App for Everyone (November 30, 2010)


Assignment:

Final Project, Stage 2 (Due 11/10/2011
)



11/09/11

Final Project Prep / iPhone v. Android v. Windows Phone 7 group discussion


Videos:

Lessons from Bezos,
Pincus
, Young: CEO 2.0

(November 12, 2010) (Optional)



LinkedIn: Shipping with
CoreData

(November 5, 2010) (Optional)


Assignment:

Final Project, Stage 3 (Due 11/17/2011
)



11/16/11

Final Project Prep


Videos:

Building
Flipboard

(November 19, 2010) (Optional)


Assignment:

Final Project Presentation (Due 11/30/2011
)



11/23/11

Thanksgiving


Continue Final Projects on your
own



11/30/11

Demonstrate Final Projects to
class



12/4/11

Class Offsite


Sunday (tentative
)



Finals

Submission of final code due by official finals date

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

6

Duncan Hall Kiosk Final Project


Possible Final project for one or two teams of one or
two people.


Replace Duncan Hall Kiosk with iPad version


Person Lookup


Location map


Event Database


911 function (template)


Billboard mode


Management Console


Locked Application


Possible second semester continuation project

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

7

CREATING AND CONSUMING
WEB SERVICES

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

8

Web Services
(abbreviated)


The ability to programmatically access
remote servers over a web like interface


The web as a subroutine


The web without a browser



The ability to make a large serve be an
extension of your
iOS

app.

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

9

Three Popular
Types


Simple Object Access Protocol (SOAP)


Protocol relying on XML, RPC and HTTP


More of a Client/Server tunnel over HTTP


Easy to use, Rigid (defined), development tools


REpresentational

State Transfer (
RESTful
)


Developed in 2000 by Roy Fielding in his doctoral dissertation.


Interface uses standard HTTP protocols


Lightweight, human readable, no toolkit
required


JSON


JavaScript Object Notation


Alternative to and lighter version of XML


Freeform “key” : value pairs


Not as secure as some other methods


Similar
to
iOS

Property
Lists


Jayrock



open sourced JSON interface for
ASP.Net



SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

10

RESTFul

Example

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

11


Sub

MoviesInfo
()


Dim

URL
As

New

StringBuilder


URL.Append
(
"
http://www.example.com/movies.main
")



URL.Append
(
"
?var1=movies"
) ‘? Followed by key=value


URL.Append
(
"&zip
="
)


‘&
Followed by
key=value


URL.Append
(
tbZip.text
)

‘assumes a textbox named zip


MovieInfoDS

=
New

DataSet


Try


MovieInfoDS.ReadXml
(
XmlReader
.Create
(
URL.ToString
()))


If

ShowInfoDS.Tables.Count

= 0
Then


. . .


End

If


Catch

ex
As

Exception


. . .


End

Try

End

Sub

REST Used Extensively by Many


Amazon (Offers both REST and SOAP)


eBay


Facebook


Yahoo!


YouTube

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

12

SOAP with
ASP.Net


SOAP is more like a natural subroutine call


Parameters and results have strong data types


Various Discovery services


Development toolkits handle complexity



Many publically available


http://www.webservicex.net
/WS/wscatlist.aspx


http://www.xmethods.net


Amazon.com


SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

13

Create a Web Service


2 Steps


Create a Web Services File


Right
-
Click your web project, select ‘Add New Item’


Chose Web Service and give it a Name (uses the .
asmx

extension)


Write your functions


Code placed in
App_Code

folder under the
name.vb

file


Functions preceded with the ‘<
WebMethod
()> _’ tag

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

14


<
WebMethod
()> _


Public Function
ByTwo
(
ByVal

InputValue

As Integer) As Integer


Return
InputValue

* 2


End Function

Using JSON


Reading
a JSON string into Foundation objects


#import <JSON/
JSON.h
>


// Get a JSON string from the cloud


NSString

*
jsonString

=
[
NSString

stringWithContentsOfURL:url



encoding:NSUTFBStringEncoding

error:nil
];


// Parsing will result in Foundation objects


// Top level may be an
NSDictionary

or

an
NSArray


id object = [
jsonString

JSONValue
];


Writing a JSON string from Foundation objects


// Create some data in your app


NSDictionary

*dictionary = ...;


// Convert into a JSON string before sending to the cloud


jsonString

= [dictionary
JSONRepresentation
];

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

15

Using JSON in Comp446


Assignment #5 gets images from Flickr using
provided
FlickrFetcher

class



FlickrFetcher

uses JSON to get data



Most of this behind the scenes; just add classes to
project and call class methods.


Will have to apply for a free
FlickrAPI

key


A bit more on Assignments 5 & 6 later


SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

16

ASSIGNMENT #4 COMMENTS

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

17

Assignment #3 Comments


75% of submissions had obvious memory
management issues



Instantiating objects with only class methods



Missing boarder cases; “X
Sqrt

Graph”



Good news: Everyone passed on this
assignment.

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

18

MEMORY MANAGEMENT
CHEAT SHEET

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

19

Memory Management of
iVars

1.
Declare in class header between { }


NSArray

*
myArray
;


2.
@property declaration in header after { }


@property (
nonatomic
,
retain)
NSArray

*
myArray
;


//
nonatomic

required when overriding setter


3.
@synthesize
iVar

in implementation file


@synthesize
myArray
;


4.
Release in
dealloc

method;


[
myArray

release];

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

20

@property Memory Attribute


Use (assign) for delegates and nothing for objects not needing
memory management (assign is the default if nothing provided)


Use (copy) for
NSStrings

or other object which might get changed
by other methods behind your back


Use (retain) for most other objects


Use nothing (equivalent to assign) for non
-
object
iVars

like double or
for derived properties (properties not based on
iVars
)

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

21

-
(void)
setDelegate
: (id)
newDelegate

{


delegate=
newDelegate
;

} //no memory management

-
(void)
setMyArray
: (
NSArray

*)value

{


if (value !=
myArray
) {



[
myArray

release];



myArray
= [value retain]; }

} //Old released, new retained

-
(void)
setName
: (
NSString

*)value

{


if (value != name) {



[name release];



name = [value copy]; }

} // Creates a copy which you own

assign

retain

copy

@property (assign) id <
FooDelegate
> delegate;

@property (retain)
NSArray

*
myArray
;

@property (copy)
NSString

*name;

@synthesize delegate; // would create:

@

synthesize

myArray
; // would create
:

@synthesize name
; // would create
:

Handling
IBOutlets

1.
Declare in class header between { }


UILabel

*
myLabel
;

2.
@property declaration in header after { }


@property (retain)
IBOutlet

UILabel

*
myLabel
;

3.
@synthesize
iVar

in implementation file


@synthesize
myLabel
;

4.
Create private release method to set values to nil


-
(void)
releaseOutlets

{
self.myLabel
=nil;}

5.
Call
releaseOutlets

in
dealloc

AND
viewDidUnload


[self
releaseOutlets
];

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

22

Handling
IBOutlets

1.
Declare in class header between { }


UILabel

*
myLabel
;

2.
@property declaration in header after { }


@property (retain)
IBOutlet

UILabel

*
myLabel
;

3.
@synthesize
iVar

in implementation file


@synthesize
myLabel
;

4.
Create private release method to set values to nil


-
(void)
releaseOutlets

{
self.myLabel
=nil;}

5.
Call
releaseOutlets

in
dealloc

AND
viewDidUnload


[self
releaseOutlets
];

6.
Alternate to 4 & 5


self.myLabel
=nil;


//in
viewDidUnload


[
myLabel

release];

//in
dealloc

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

23

Objects Created in Methods


For methods that return objects:


iVar

objects created in setters or getters should be retained taking
care to release any previous values


Methods starting with new, copy or
init

should return retained
objects


Other methods should return
autoreleased

objects



Objects temporarily created in methods and not returned:


should be released, not
autoreleased
, before end of method


use
autorelease

only for temporary objects needed after end of
method

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

24

ViewController

Memory Management


View Controllers retain their
subviews


If you
alloc
/
init

a view controller or view and push it
onto another controller, you should release it.

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

25

Homework Memory Management


A good 75 percent of Assignment #3 had memory
management issues covered by this cheat sheet.


I will be looking at the obvious areas covered in this
cheat sheet.


If I find any leaks, I will reject the homework only
letting you know that you are leaking.


You will have to find, fix and resubmit your
homework.

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

26

VIDEOS 7 & 8 SUMMARY

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

27

Slides based on CS 193p fall 2010 iTunes University videos

UITabBarController


Switch between major independent
sections of an app.


Each tab has its own view controller,
often a
UINavigationController

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

28

-

(BOOL)application:(
UIApplication

*)


didFinishLaunchingWithOptions
:(
NSDictionary

*)

{


UIViewController

*vc1 = ...;


UIViewController

*vc2 = ...;


UITabBarController

*
tbc

= [[
UITabBarController

alloc
]
init
];


tbc.viewControllers

= [
NSArray

arrayWithObjects
: vc1, vc2, ..., nil];


[
vc1 release]; [vc2 release];


[
window
addSubview:tbc.view
];


[
window
makeKeyAndVisible
];


return
YES;

}

UITabBarItem


Property of
UIViewController


Default button text =
UIViewController’s

title.


Can be set with custom values or system values


SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

29

-

(void)setup // call from
initWithNibName:bundle
: and
awakeFromNib

{


UITabBarItem

*item = [[
UITabBarItem

alloc
]



initWithTitle
:@”Timer”



image
:[
UIImage

imageNamed
:@”timer.png
”]
// from Resources



tag:0
];



//
identifying tag, can ignore


self.tabBarItem

= item;


[
item release];

}

-

(void)
somethingHappenedToCauseUsToNeedToShowABadgeValue

{


self.tabBarItem.badgeValue

= @“R”;

}

Combine
NavController

with
TabBar


UITabBarController

is top level


UINavigationController

inside
UITabBarController


SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

30

-

(BOOL)application:(
UIApplication

*)app
didFinishLaunchingWithOptions
:(
NSDictionary

*)options

{


UINavigationController

*nav1 = [[
UINavigationController

alloc
]
init
];


UINavigationController

*nav2 = [[
UINavigationController

alloc
]
init
];


[
nav1
pushViewController
:...];


[
nav2
pushViewController
:...];


//
here we would likely to want to release the view controllers pushed onto the navigation
controllers



UITabBarController

*
tbc

= [[
UITabBarController

alloc
]
init
];
// should be
ivar

released in
dealloc


tbc.viewControllers

= [
NSArray

arrayWithObjects:nav1, nav2, nil];


[
nav1 release]; [nav2 release];


[
window
addSubview:tbc.view
];


[
window
makeKeyAndVisible
];


return
YES;

}

UISplitViewController


Side by side, master/slave controller added with
introduction of iPad.

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

31

-

(BOOL)application:(
UIApplication

*)app
didFinishLaunchingWithOptions
:(
NSDictionary

*)options

{


UIViewController

*left = ...;


UIViewController

*right =
...;



UINavigationController

*
leftNav

= [[
UINavigationController

alloc
]
init
];


UINavigationController

*
rightNav

= [[
UINavigationController

alloc
]
init
];



[
leftNav

pushViewController:left

animated:NO
];


[
rightNav

pushViewController:right

animated:NO
];


[
left release]; [right release];
// if they were
alloc’ed

above, that
is



UISplitViewController
*svc = [[UISplitViewController alloc] init];
// “leak
”, but app killed afte leak



svc.viewControllers

= [
NSArray

arrayWithObjects:leftNav
,
rightNav
, nil];


[
leftNav

release]; [
rightNav

release
];



[
window
addSubview:svc.view
];


[
window
makeKeyAndVisible
];


return
YES;

}

UISplitViewController

Rotation

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

32

-

(void)
splitViewController
:(
UISplitViewController
*)
sv


willHideViewController
:(
UIViewController

*)
aViewController


withBarButtonItem
:(
UIBarButtonItem
*)
barButtonItem


forPopoverController
:(
UIPopoverController
*)popover

{


barButtonItem.title

=
aViewController.title
; // this is the title of the left
-
hand
vc


self.navigationItem.rightBarButtonItem

=
barButtonItem
;


//
if we are not in a
UINavigationController

this method (appropriately) does nothing

}

-

(void)
splitViewController
:(
UISplitViewController
*)
sv


willShowViewController
:(
UIViewController

*)
aViewController


invalidatingBarButtonItem
:(
UIBarButtonItem
*)
barButtonItem

{


self.navigationItem.rightBarButtonItem

= nil;

}

-

(void)
splitViewController
:(
UISplitViewController
*)
sv


popoverController
:(
UIPopoverController

*)popover


willPresentViewController
:(
UIViewController

*)
leftViewController

{


//
do nothing here because we don’t “know about” the left view controller

}

UIPopoverController


Does not inherit from
UIViewController



Automatically generated with
UISplitviewController


Can also be created independently



Create with
-

initWithContentViewController
:



Present with
-

presentPopoverFrom

Rect
: …

or


-

presentPopoverFromBarButtonItem
: …


SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

33

Universal Apps


Can create at onset or upgrade


Two different
main.xib

files


iPhone and iPad


Correct one automatically loaded


May have to choose if overlaying inside program


Programmatically check for type in many ways


i
f (
self.splitViewController

!= nil)


i
f (
self.view.window
)


Check value of [[
UIScreen

mainScreen
] bounds];


BOOL iPad = (UI_USER_INTERFACE_IDIOM() ==
UIUserInterfaceIdiomPad
);

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

34

Universal Application Launch

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

35

-

(void)application:(
UIApplication

*)application


didFinishLaunchingWithOptions
:(
NSDictionary

*)options

{


UIViewController

*master = ...;


UIViewController

*detail = ...;


master.subservientController

= detail;
// master pushes detail on iPhone
only (subservient is created)


UINavigationController

*
masterNav

= [[
UINavigationController

alloc
]
init
];


[
masterNav

pushViewController:master

animated:NO
];


if
(iPad) {



UINavigationController

*
detailNav

= [[
UINavigationController

alloc
]
init
];



[
detailNav

pushViewController:detail

animated:NO
];



UISplitViewController

*
splitVC

= [[
UISplitViewController

alloc
]
init
];



splitVC.delegate

= detail;
// note: detail implements
UISplitViewControllerDelegate



splitVC.viewControllers

= [
NSArray

arrayWithObjects:masterNav
,
detailNav
, nil];



[
masterNav

release]; [
detailNav

release];



rootVC

=
splitVC
;
//
rootVC

is an instance variable


}
else {



rootVC

=
masterNav
;
// master will push detail on iPhone when appropriate


}


[
window
addSubview:rootVC.view
];


return YES;

}

UIGestureRecognizer


Perfect example of a complex technology which is easy to
implement on
iOS
.



Set of classes derived from
UIGestureRecognizer


UIPanGestureRecognizer


UITapGestureRecognizer


UIPinchGestureRecognizer


UIRotationGestureRecognizer


UISwipeGestureRecognizer

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

36

Two Phase Setup


Controller typically:


instantiates a specific gesture recognizer


Uses target/action to select object and method which will
handle recognized gesture


Adds instance to the
UIView

class (and releases memory)


View typically:


Is target for recognizer.


Has methods to handle recognizer


Checks state and other property values to determine how to
properly respond

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

37

Recognizer Properties


UIPanGestureRecognizer


@property
NSUInteger

maximumNumberOfTouches


@property
NSUInteger

minimumNumberOfTouches


UIPinchGestureRecognizer


@property
CGFloat

scale;
// note that this is NOT
readonly

(can reset each movement)


@property (
readonly
)
CGFloat

velocity;
// note that this IS
readonly
; scale factor per second


UIRotationGestureRecognizer


@property
CGFloat

rotation;
// note that this is NOT
readonly
; in radians


@property (
readonly
)
CGFloat

velocity;
// note that this IS
readonly
; radians per second


UISwipeGestureRecognizer


This one you “set up” (w/the following) to find certain swipe types, then look for Recognized
state


@property
UISwipeGestureRecognizerDirection

direction;
// what direction swipes you want


@property
NSUInteger

numberOfTouchesRequired
;
// two finger swipes? or just one finger?
more?


UITapGestureRecognizer


Set up (w/the following) then look for Recognized state


@property
NSUInteger

numberOfTapsRequired
;
// single tap or double tap or triple tap, etc.


@property
NSUInteger

numberOfTouchesRequired
;
// e.g., require two finger tap?

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

38

VIDEOS 9 & 10 PREVIEW

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

39

Slides based on CS 193p fall 2010 iTunes University videos

New Classes


UIImage

and
UIImageView


Image created with
NSData
, from file, from URL


Animations, Highlights,


UIWebView


Displays HTML, PDF, etc. inside
UIView


Handles some JavaScript


UIScrollView


A
UIView

that can be panned and scaled


Parent class of
UITextView

and
UITableView


UITableView

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

40

UITableView


The canonical class used for efficiently displaying
tables of data.


Creates and reuses
UITableViewCells


Delegates


UITableViewDataSource

for data


UITableViewDelegate

for display information


Both often part of
UTTableViewController

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

41

Assignment #5


No more calculator


Problem involves two major technologies


Getting data from the web (Flickr)


Using a
UITableViewController

to quickly scroll
through items.


Flickr top places


Photos from the top places


Will require you to obtain a free
FlickrAPI

key.

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

42

Assignment #6 Preview


Will start in 1 week.


Staggered overlapping due date with Assignment #5


Three major parts

1.
Core Data version of Assignment #5

2.
Addition of Favorite Places

3.
Caching of image data to sandbox


Item 1 required, Items 2 and 3 required if you want possibility of
A+ in class


While not required, if you want to create great apps, you
should also do Assignment #7


multi thread


Items 2 and 3 can be submitted at any time before last class


SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

43

Week 7


Watch CS193p lectures
#9
and
#10


Preferably before Saturday. Definitely before next class.


Start CS193p
Assignment
#5


Try and complete before next class. Due
10/13/2011.


Assignment #6 (partial) will start next week


Assignment #6 due 10/20/2011
.

SEC
-

9/28/11

COMP 446 / ELEC 446
-

Week 8

44