CS Programming I: Using Objects

Similar documents
CS Programming I: Using Objects

CS Programming I: Branches

CS Programming I: Branches

CS Programming I: Primitives and Expressions

CS Programming I: ArrayList

CS Programming I: Programming Process

CS Programming I: Programming Process

Java Basic Datatypees

Welcome to the Using Objects lab!

CS Programming I: File Input / Output

CS Programming I: Arrays

CSCI 2010 Principles of Computer Science. Data and Expressions 08/09/2013 CSCI

CS Programming I: File Input / Output

CS Programming I: Inheritance

Welcome to the Using Objects lab!

Using Java Classes Fall 2018 Margaret Reid-Miller

A variable is a name for a location in memory A variable must be declared

Data and Expressions. Outline. Data and Expressions 12/18/2010. Let's explore some other fundamental programming concepts. Chapter 2 focuses on:

We now start exploring some key elements of the Java programming language and ways of performing I/O

Chapter 2: Data and Expressions

Variables, Constants, and Data Types

Chapter 2: Data and Expressions

CS Programming I: Exceptions

CS Programming I: Programming Process

CS Programming I: Exceptions

Review Chapters 1 to 4. Instructor: Scott Kristjanson CMPT 125/125 SFU Burnaby, Fall 2013

Princeton University. Computer Science 217: Introduction to Programming Systems. Data Types in C

Chapter 6 Primitive types

Object oriented programming. Instructor: Masoud Asghari Web page: Ch: 3

Formatting Output & Enumerated Types & Wrapper Classes

Peer Instruction 1. Elementary Programming

Getting started with Java

boolean, char, class, const, double, else, final, float, for, if, import, int, long, new, public, return, static, throws, void, while

Computational Expression

Strings, characters and character literals

CS 302: Introduction to Programming

Introduction to Programming Using Java (98-388)

Java characters Lecture 8

ECE 122 Engineering Problem Solving with Java

Java Notes. 10th ICSE. Saravanan Ganesh

Strings, Strings and characters, String class methods. JAVA Standard Edition

COMP 202. Built in Libraries and objects. CONTENTS: Introduction to objects Introduction to some basic Java libraries string

CS1150 Principles of Computer Science Math Functions, Characters and Strings (Part II)

Princeton University Computer Science 217: Introduction to Programming Systems The C Programming Language Part 1

TCL - STRINGS. Boolean value can be represented as 1, yes or true for true and 0, no, or false for false.

Language Fundamentals Summary

Chapter 2: Data and Expressions

"Hello" " This " + "is String " + "concatenation"

4 Programming Fundamentals. Introduction to Programming 1 1

Lecture Set 2: Starting Java

Review. Single Pixel Filters. Spatial Filters. Image Processing Applications. Thresholding Posterize Histogram Equalization Negative Sepia Grayscale

Lecture Set 2: Starting Java

Programming in C++ 4. The lexical basis of C++

Full file at

211: Computer Architecture Summer 2016

Full file at

2/12/17. Goals of this Lecture. Historical context Princeton University Computer Science 217: Introduction to Programming Systems

c) And last but not least, there are javadoc comments. See Weiss.

Lecture 3. More About C

Basics of Java Programming

COMP519 Web Programming Lecture 17: Python (Part 1) Handouts

Java s String Class. in simplest form, just quoted text. used as parameters to. "This is a string" "So is this" "hi"

Chapter 2 Using Data. Instructor s Manual Table of Contents. At a Glance. Overview. Objectives. Teaching Tips. Quick Quizzes. Class Discussion Topics

Gabriel Hugh Elkaim Spring CMPE 013/L: C Programming. CMPE 013/L: C Programming

Chapter. Let's explore some other fundamental programming concepts

Chapter 2: Using Data

MATHEMATICAL FUNCTIONS CHARACTERS, AND STRINGS. INTRODUCTION IB DP Computer science Standard Level ICS3U

JAVA Programming Fundamentals

Lecture Notes. System.out.println( Circle radius: + radius + area: + area); radius radius area area value

CS Programming I: Classes

CHAPTER 2 Java Fundamentals

H212 Introduction to Software Systems Honors

Overview. - General Data Types - Categories of Words. - Define Before Use. - The Three S s. - End of Statement - My First Program

Chapter 4 Classes in the Java Class Libraries

Programming with Java

Chapter 2 Elementary Programming

Contents. Figures. Tables. Examples. Foreword. Preface. 1 Basics of Java Programming 1. xix. xxi. xxiii. xxvii. xxix

AP Computer Science Unit 1. Programs

Lexical Structure (Chapter 3, JLS)

CS 200 Using Objects. Jim Williams, PhD

Strings. Strings and their methods. Dr. Siobhán Drohan. Produced by: Department of Computing and Mathematics

Primitive Data Types: Intro

CSC 1107: Structured Programming

Learning objectives: Objects and Primitive Data. Introduction to Objects. A Predefined Object. The print versus the println Methods

Assoc. Prof. Marenglen Biba. (C) 2010 Pearson Education, Inc. All rights reserved.

Objectives of CS 230. Java portability. Why ADTs? 8/18/14

Eng. Mohammed Abdualal

Princeton University COS 217: Introduction to Programming Systems C Primitive Data Types

Tools : The Java Compiler. The Java Interpreter. The Java Debugger

Sprite an animation manipulation language Language Reference Manual

Overview of C. Basic Data Types Constants Variables Identifiers Keywords Basic I/O

Data Types Literals, Variables & Constants

Program Elements -- Introduction

Visual C# Instructor s Manual Table of Contents

Computational Expression

Introductory Mobile Application Development

An overview of Java, Data types and variables

Mobile Computing Professor Pushpendra Singh Indraprastha Institute of Information Technology Delhi Java Basics Lecture 02

Assoc. Prof. Marenglen Biba. (C) 2010 Pearson Education, Inc. All rights reserved.

VARIABLES AND TYPES CITS1001

Transcription:

CS 200 - Programming I: Using Objects Marc Renault Department of Computer Sciences University of Wisconsin Madison Fall 2017 TopHat Sec 3 (PM) Join Code: 719946 TopHat Sec 4 (AM) Join Code: 891624

Binary

1/21 Binary Bits Binary digits: 0 or 1; base 2 numbers. Information in computers is encoded in binary.

1/21 Binary Bits Binary digits: 0 or 1; base 2 numbers. Information in computers is encoded in binary. Decimal Binary 198 =

1/21 Binary Bits Binary digits: 0 or 1; base 2 numbers. Information in computers is encoded in binary. Decimal Binary 198 = 1 10 2 + 9 10 1 + 8 10 0

1/21 Binary Bits Binary digits: 0 or 1; base 2 numbers. Information in computers is encoded in binary. Decimal Binary 198 = 1 10 2 + 9 10 1 + 8 10 0 = 1 2 7 + 1 2 6 + 0 2 5 + 0 2 4 + 0 2 3 + 1 2 2 + 1 2 1 + 0 2 0

1/21 Binary Bits Binary digits: 0 or 1; base 2 numbers. Information in computers is encoded in binary. Decimal Binary 198 = 1 10 2 + 9 10 1 + 8 10 0 = 1 2 7 + 1 2 6 + 0 2 5 + 0 2 4 + 0 2 3 + 1 2 2 + 1 2 1 + 0 2 0 = 11000110 2

2/21 TopHat Question 1 What is 17 in binary? a. 10000 b. 10001 c. 11001 d. 10011

3/21 TopHat Question 2 What is 10110 in decimal? a. 18 b. 20 c. 22 d. 24

4/21 Numbers in Bases of Powers of 2 Decimal Base 10 2 3.32193 : 21 10 or 21.

4/21 Numbers in Bases of Powers of 2 Decimal Base 10 2 3.32193 : 21 10 or 21. Unary Base 2 0 = 1: 111111111111111111111 1.

4/21 Numbers in Bases of Powers of 2 Decimal Base 10 2 3.32193 : 21 10 or 21. Unary Base 2 0 = 1: 111111111111111111111 1. Binary Base 2 1 = 2: 10101 2 or 0b10101 (or 10101 when the base is clear from the context).

4/21 Numbers in Bases of Powers of 2 Decimal Base 10 2 3.32193 : 21 10 or 21. Unary Base 2 0 = 1: 111111111111111111111 1. Binary Base 2 1 = 2: 10101 2 or 0b10101 (or 10101 when the base is clear from the context). Quarternary Base 2 2 = 4: 111 4.

4/21 Numbers in Bases of Powers of 2 Decimal Base 10 2 3.32193 : 21 10 or 21. Unary Base 2 0 = 1: 111111111111111111111 1. Binary Base 2 1 = 2: 10101 2 or 0b10101 (or 10101 when the base is clear from the context). Quarternary Base 2 2 = 4: 111 4. Octal Base 2 3 = 8: 25 8 or 025 or 0o25.

4/21 Numbers in Bases of Powers of 2 Decimal Base 10 2 3.32193 : 21 10 or 21. Unary Base 2 0 = 1: 111111111111111111111 1. Binary Base 2 1 = 2: 10101 2 or 0b10101 (or 10101 when the base is clear from the context). Quarternary Base 2 2 = 4: 111 4. Octal Base 2 3 = 8: 25 8 or 025 or 0o25. Hexadecimal Base 2 4 = 16: 15 16 or 0x15. Need 16 characters to represent the 16 digits: 0 0 4 4 8 8 12 c 1 1 5 5 9 9 13 d 2 2 6 6 10 a 14 e 3 3 7 7 11 b 15 f

5/21 TopHat Question 3 Convert 1100 1010 1111 1110 1011 1010 1011 1110 to hexadecimal. Type your answer in TopHat.

Reference Types

6/21 References for Primitives Reference Integer Long Double Primitive int long double Primitive Wrappers Objects that contain a primitive value. Allows primitives to be used in many of Java s built-in data structures like ArrayList. Provides some addition methods for conversions.

6/21 References for Primitives Reference Integer Long Double Primitive int long double E.g. Integer intwrap = 5; Long longwrap = new Long(15); Primitive Wrappers Objects that contain a primitive value. Allows primitives to be used in many of Java s built-in data structures like ArrayList. Provides some addition methods for conversions.

6/21 References for Primitives Reference Integer Long Double Primitive int long double E.g. Integer intwrap = 5; Long longwrap = new Long(15); Primitive Wrappers Objects that contain a primitive value. Allows primitives to be used in many of Java s built-in data structures like ArrayList. Provides some addition methods for conversions. typevalue() method for retrieving primitive. E.g. intwrap.intvalue();

7/21 What are References? Less Simple Memory Model Stack Heap

7/21 What are References? Less Simple Memory Model int i = 5; Stack Heap 5 i

7/21 What are References? Less Simple Memory Model int i = 5; Integer j = 6; Stack Heap 6 j 5 i

7/21 What are References? Less Simple Memory Model int i = 5; Integer j = 6; Double d = 2. 5; Stack Heap 6 d j 5 i 2.5

7/21 What are References? Less Simple Memory Model Stack 6 Heap int i = 5; Integer j = 6; Double d = 2. 5; Integer s = 6; s d j 5 i 2.5

What are References? Less Simple Memory Model Stack 6 Heap int i = 5; Integer j = 6; Double d = 2. 5; Integer s = 6; Scanner sc = new Scanner ( System.in ); sc s d j 5 i Scanner Obj 2.5 7/21

7/21 What are References? Less Simple Memory Model Stack 6 Heap int i = 5; Integer j = 6; Double d = 2. 5; Integer s = 6; Scanner sc = new Scanner ( System.in ); sc s d j 5 i References Scanner Obj Refer to an object. Value: referral 2.5 information.

Strings

8/21 Characters Primitive char c; Literal: a Note: single quotes ( ) not double quotes ("). Wrapper Object: Character

8/21 Characters Primitive char c; Literal: a Note: single quotes ( ) not double quotes ("). Wrapper Object: Character Escape Characters \: Escape metacharacter. \n Newline \ Single quote \t Tab \r Carriage return \" Double quote \b Backspace \f Line feed \\ Backslash

9/21 Character Encodings ASCII A 7-bit character encoding in 1 byte. UNICODE An ASCII extension using more bits. UTF-8: 1 to 4 bytes; most popular UNICODE. More popular than ASCII as encoding on the web since 2008. Currently, about 90% of the web. a UTF-16: 2 or 4 bytes; used by java internally to encode strings. a https: //w3techs.com/technologies/overview/character_encoding/all

10/21 Strings astr 0 1 2 3 4 5 6 7 8 9 10 11 h e l l o w o r l d! Declaration: String astr = " hello world!"; String A reference type. Refers to a sequence of characters.

Strings astr 0 1 2 3 4 5 6 7 8 9 10 11 h e l l o w o r l d! Declaration: String astr = " hello world!"; String A reference type. Refers to a sequence of characters. Index starts at 0. 10/21

11/21 String Operations astr: 0 1 2 3 4 5 6 7 8 9 10 11 h e l l o w o r l d! astr.length() is 12 Useful String Methods length() Number of characters

11/21 String Operations astr: 0 1 2 3 4 5 6 7 8 9 10 11 h e l l o w o r l d! astr.charat(4) is o Useful String Methods length() Number of characters charat(index) Character at given index

11/21 String Operations astr: 0 1 2 3 4 5 6 7 8 9 10 11 h e l l o w o r l d! astr.substring(1,7) is "ello w" Useful String Methods length() Number of characters charat(index) Character at given index substring(startindex,endindex) Sub-string from startindex to endindex - 1

11/21 String Operations astr: 0 1 2 3 4 5 6 7 8 9 10 11 h e l l o w o r l d! astr.indexof( l ) is 2 Useful String Methods length() Number of characters charat(index) Character at given index substring(startindex,endindex) Sub-string from startindex to endindex - 1 indexof(item, startindex) Returns the first index of item from startindex

11/21 String Operations astr: 0 1 2 3 4 5 6 7 8 9 10 11 h e l l o w o r l d! astr.indexof( l, 5) is 9 Useful String Methods length() Number of characters charat(index) Character at given index substring(startindex,endindex) Sub-string from startindex to endindex - 1 indexof(item, startindex) Returns the first index of item from startindex

11/21 String Operations astr: 0 1 2 3 4 5 6 7 8 9 10 11 h e l l o w o r l d! astr.indexof(? ) is -1 Useful String Methods length() Number of characters charat(index) Character at given index substring(startindex,endindex) Sub-string from startindex to endindex - 1 indexof(item, startindex) Returns the first index of item from startindex

11/21 String Operations astr: 0 1 2 3 4 5 6 7 8 9 10 11 h e l l o w o r l d! astr.indexof("ll") is 2 Useful String Methods length() Number of characters charat(index) Character at given index substring(startindex,endindex) Sub-string from startindex to endindex - 1 indexof(item, startindex) Returns the first index of item from startindex

11/21 String Operations astr: 0 1 2 3 4 5 6 7 8 9 10 11 h e l l o w o r l d! astr.lastindexof( l ) is 9 Useful String Methods length() Number of characters charat(index) Character at given index substring(startindex,endindex) Sub-string from startindex to endindex - 1 indexof(item, startindex) Returns the first index of item from startindex lastindexof(item, startindex) Reverse of indexof

12/21 Strings and Scanner https://cs200-www.cs.wisc.edu/wp/resources/learn-to-use-scanner/ h e l l o w o r l d! \n Tokenizing delimiter Sequence of characters (1 or more) that separate the regions of interest. token Regions of interest. whitespace space, tab (\t), newline (\n), carriage return (\r), form feed (\f).

12/21 Strings and Scanner https://cs200-www.cs.wisc.edu/wp/resources/learn-to-use-scanner/ h e l l o w o r l d! \n Delimiter: Any amount of whitespace Tokenizing delimiter Sequence of characters (1 or more) that separate the regions of interest. token Regions of interest. whitespace space, tab (\t), newline (\n), carriage return (\r), form feed (\f).

12/21 Strings and Scanner https://cs200-www.cs.wisc.edu/wp/resources/learn-to-use-scanner/ sc h e l l o w o r l d! \n Delimiter: Any amount of whitespace Some more Scanner Instance Methods Scanner sc = new Scanner(...); sc.nextline() Read until end of line. sc.next() Default delimiter: Any amount of whitespace. sc.usedelimiter(delim) Sets the delimiter to delim string. sc.reset() Reset the delimiter to the default.

12/21 Strings and Scanner https://cs200-www.cs.wisc.edu/wp/resources/learn-to-use-scanner/ sc h e l l o w o r l d! \n sc.nextline() Delimiter: Any amount of whitespace Some more Scanner Instance Methods Scanner sc = new Scanner(...); sc.nextline() Read until end of line. sc.next() Default delimiter: Any amount of whitespace. sc.usedelimiter(delim) Sets the delimiter to delim string. sc.reset() Reset the delimiter to the default.

12/21 Strings and Scanner https://cs200-www.cs.wisc.edu/wp/resources/learn-to-use-scanner/ sc h e l l o w o r l d! \n sc.next() Delimiter: Any amount of whitespace Some more Scanner Instance Methods Scanner sc = new Scanner(...); sc.nextline() Read until end of line. sc.next() Default delimiter: Any amount of whitespace. sc.usedelimiter(delim) Sets the delimiter to delim string. sc.reset() Reset the delimiter to the default.

12/21 Strings and Scanner https://cs200-www.cs.wisc.edu/wp/resources/learn-to-use-scanner/ sc h e l l o w o r l d! \n Delimiter: Any amount of whitespace Some more Scanner Instance Methods Scanner sc = new Scanner(...); sc.nextline() Read until end of line. sc.next() Default delimiter: Any amount of whitespace. sc.usedelimiter(delim) Sets the delimiter to delim string. sc.reset() Reset the delimiter to the default.

12/21 Strings and Scanner https://cs200-www.cs.wisc.edu/wp/resources/learn-to-use-scanner/ sc h e l l o w o r l d! \n Delimiter: Any amount of whitespace sc.next() Some more Scanner Instance Methods Scanner sc = new Scanner(...); sc.nextline() Read until end of line. sc.next() Default delimiter: Any amount of whitespace. sc.usedelimiter(delim) Sets the delimiter to delim string. sc.reset() Reset the delimiter to the default.

12/21 Strings and Scanner https://cs200-www.cs.wisc.edu/wp/resources/learn-to-use-scanner/ h e l l o w o r l d! \n Delimiter: A single "l" (TopHat Q4: How many tokens?) Some more Scanner Instance Methods Scanner sc = new Scanner(...); sc.nextline() Read until end of line. sc.next() Default delimiter: Any amount of whitespace. sc.usedelimiter(delim) Sets the delimiter to delim string. sc.reset() Reset the delimiter to the default.

12/21 Strings and Scanner https://cs200-www.cs.wisc.edu/wp/resources/learn-to-use-scanner/ h e l l o w o r l d! \n Delimiter: A single "l" Some more Scanner Instance Methods Scanner sc = new Scanner(...); sc.nextline() Read until end of line. sc.next() Default delimiter: Any amount of whitespace. sc.usedelimiter(delim) Sets the delimiter to delim string. sc.reset() Reset the delimiter to the default.

13/21 Instance vs Static Method Instance Method A method (non-static) that requires an instance of the class. instancename.methodname(...) Ex. String s = "Hello World!" s = s.substring(0,3);

13/21 Instance vs Static Method Instance Method A method (non-static) that requires an instance of the class. instancename.methodname(...) Ex. String s = "Hello World!" s = s.substring(0,3); Static Method A (static) method that does not require an instance of the class to run. ClassName.methodName(...) Ex. Math.pow(2,5);

Back to References

14/21 Immutable Objects String and the primitive wrappers are immutable. Definition An immutable object is an object that cannot be modified after its creation. Stack Heap

Immutable Objects String and the primitive wrappers are immutable. Definition An immutable object is an object that cannot be modified after its creation. Stack Heap Integer i = 6; 6 i 14/21

Immutable Objects String and the primitive wrappers are immutable. Definition An immutable object is an object that cannot be modified after its creation. Stack 6 Heap Integer i = 6; Integer j = 6; j i 14/21

Immutable Objects String and the primitive wrappers are immutable. Definition An immutable object is an object that cannot be modified after its creation. Stack 6 Heap Integer i = 6; Integer j = 6; j = 5; j i 5 14/21

Immutable Objects String and the primitive wrappers are immutable. Definition An immutable object is an object that cannot be modified after its creation. Stack Heap Integer i = 6; Integer j = 6; 6 j = 5; Integer k = new Integer (5); 5 k j i 5 14/21

Immutable Objects String and the primitive wrappers are immutable. Definition An immutable object is an object that cannot be modified after its creation. Stack Heap String s = " foobar "; foobar s 14/21

Immutable Objects String and the primitive wrappers are immutable. Definition An immutable object is an object that cannot be modified after its creation. Stack Heap String s = " foobar "; s = s. substring (0,3); foobar foo s 14/21

Random Numbers

15/21 TopHat Question 5 Pick the random binary string: 111111111111111111111111111111111111111111111111 110011010110110101100101100101111010100101010111 110010010000111111011010101000100010000101101000

16/21 What is randomness?

16/21 What is randomness? Anecdotally, humans are biased towards sequences without discernible patterns.

16/21 What is randomness? Anecdotally, humans are biased towards sequences without discernible patterns. Kolmogorov Complexity How succinctly can the sequence be described?

16/21 What is randomness? Anecdotally, humans are biased towards sequences without discernible patterns. Kolmogorov Complexity How succinctly can the sequence be described? 111111111111111111111111111111111111111111111111 : 48 1 s (Low) 110011010110110101100101100101111010100101010111 : no clue (High) 110010010000111111011010101000100010000101101000 : π in binary to 46 floating-point digits (Low)

17/21 Sources of Randomness Lack of Knowledge We don t know the forces being applied.

17/21 Sources of Randomness Lack of Knowledge We don t know the forces being applied. Certified Random Bits It is possible to get truly random bits via the quantum world: Random numbers certified by Bell s theorem S. Pironio, A. Acín, S. Massar, A. Boyer de la Giroday, D. N. Matsukevich, P. Maunz, S. Olmschenk, D. Hayes, L. Luo, T. A. Manning & C. Monroe Nature 464, 1021-1024 (15 April 2010)

17/21 Sources of Randomness in Java Pseudorandom Number Generator A pseudorandom number generator is able to produce a sequence of seemingly random numbers.

17/21 Sources of Randomness in Java Pseudorandom Number Generator A pseudorandom number generator is able to produce a sequence of seemingly random numbers. The first random value r 1 is calculated from a seed.

17/21 Sources of Randomness in Java Pseudorandom Number Generator A pseudorandom number generator is able to produce a sequence of seemingly random numbers. The first random value r 1 is calculated from a seed. Typically, the seed will be based on the current time.

17/21 Sources of Randomness in Java Pseudorandom Number Generator A pseudorandom number generator is able to produce a sequence of seemingly random numbers. The first random value r 1 is calculated from a seed. Typically, the seed will be based on the current time. All subsequent random numbers are calculated from the previous value. (I.e. r n = f (r n 1 ))

17/21 Sources of Randomness in Java Pseudorandom Number Generator A pseudorandom number generator is able to produce a sequence of seemingly random numbers. The first random value r 1 is calculated from a seed. Typically, the seed will be based on the current time. All subsequent random numbers are calculated from the previous value. (I.e. r n = f (r n 1 )) Pseudorandom because the seed fully determines the sequence of numbers.

18/21 Random Class Standard Java class: import java.util.random; Important Instance Methods Constructor: Random rand = new Random(); "Random" seed.

18/21 Random Class Standard Java class: import java.util.random; Important Instance Methods Constructor: Random rand = new Random(); "Random" seed. Constructor: Random rand = new Random(seed); Fixed seed.

18/21 Random Class Standard Java class: import java.util.random; Important Instance Methods Constructor: Random rand = new Random(); "Random" seed. Constructor: Random rand = new Random(seed); Fixed seed. setseed(seed) Resets the instance to a fixed seed.

18/21 Random Class Standard Java class: import java.util.random; Important Instance Methods Constructor: Random rand = new Random(); "Random" seed. Constructor: Random rand = new Random(seed); Fixed seed. setseed(seed) Resets the instance to a fixed seed. nextint(bound) Returns a pseudorandom number between 0 and bound - 1.

19/21 Using Random Random rand = new Random (); int randint = rand. nextint (10) + 1;

19/21 Using Random Random rand = new Random (); int randint = rand. nextint (10) + 1; Between 0 and 9

19/21 Using Random Random rand = new Random (); Shifts by 1 int randint = rand. nextint (10) + 1; Between 0 and 9

20/21 TopHat Question 6 Complete the following code snippet so that randint gets a pseudorandom number between 3 and 18 inclusive: Random rand = new Random(); int randint =

21/21 Further Reading COMP SCI 200: Programming I zybooks.com, 2015. zybook code: WISCCOMPSCI200Fall2017 Chapter 3. Using Objects

Appendix References Appendix

Appendix References References

Appendix References 22/21 Image Sources I http://dilbert.com/ http://www.clinovo.com/userfiles/ clincapture/randomization.jpg https://brand.wisc.edu/web/logos/ http://www.zybooks.com/