Data Visualization Designer and Consultant for the Arts
The University Libraries of Virginia Tech seeks a specialist to join a team offering critical and sophisticated new technology development services that enhance the scholarly and creative expression of faculty and graduate students. This new position will bring relevant computational techniques to the enhance the fields of Art and Design at Virginia Tech, and will serve as a visual design consultant to project teams using data visualization methodologies.
The ideal candidates will have demonstrated web development and programming skills, knowledge of digital research methods and tools in Art and Design, experience managing and interpreting common types of digital data and assets studied in those fields.
The Data Visualization Designer & Digital Consultant for the Arts will not only help researchers in Art and Design fields develop, manage, and sustain digital creative works and digital forms of scholarly expression, but also help researchers across Virginia Tech design effective visual representations of their research. Successful candidates will work collaboratively with other Virginia Tech units, such as the School of Visual Arts; the School of Performing Arts; the Moss Center for the Arts; the Institute for Creativity, Arts, and Technology; and the arts community development initiative VTArtWorks (made possible by the Institute of Museum and Library Services [SP-02-15-0034-15])
– Investigates and applies existing and emerging technologies that help strengthen the Libraries’ mission to enhance and curate visual representations of data at Virginia Tech.
– Develops and modifies technologies and designs processes that facilitate data visualization/exploration, data and information access, data discovery, data mining, data publishing, data management, and preservation
– Serves as consultant to researchers on data visualization, visual design principles, and related computational tools and methods in the digital arts
– Keeps up with trends in digital research issues, methods, and tools in related disciplines
– Identifies data, digital scholarship, and digital library development referral opportunities; makes connections with research teams across campus
– Participates in teams and working groups and in various data-related projects and initiatives as a result of developments and changes in library services
THE DIGITAL HUMANITIES: IMPLICATIONS FOR LIBRARIANS,
LIBRARIES, AND LIBRARIANSHIP
The redefinition of humanities scholarship has received major attention in higher education over the past few years. The advent of digital humanities has challenged many aspects of academic librarianship. With the acknowledgement that librarians must be a necessary part of this scholarly conversation, the challenges facing subject/liaison librarians, technical service librarians, and library administrators are many. Developing the knowledge base of digital tools, establishing best procedures and practices, understanding humanities scholarship, managing data through the research lifecycle, teaching literacies (information, data, visual) beyond the one-shot class, renegotiating the traditional librarian/faculty relationship as ‘service orientated,’ and the willingness of library and institutional administrators to allocate scarce resources to digital humanities projects while balancing the mission and priorities of their institutions are just some of the issues facing librarians as they reinvent themselves in the digital humanities sphere.
A CALL FOR PROPOSALS
College & Undergraduate Libraries, a peer-reviewed journal published by Taylor & Francis, invites proposals for articles to be published in the fall of 2017. The issue will be co-edited by Kevin Gunn (firstname.lastname@example.org) of the Catholic University of America and Jason Paul (email@example.com) of St. Olaf College.
The issue will deal with the digital humanities in a very broad sense, with a major focus on their implications for the roles of academic librarians and libraries as well as on librarianship in general. Possible article topics include, but are not limited to, the following themes, issues, challenges, and criticism:
Developing the project development mindset in librarians
Creating new positions and/or cross-training issues for librarians
Librarian as: point-of-service agent, an ongoing consultant, or as an embedded project librarian
Developing managerial and technological competencies in librarians
Administration support (or not) for DH endeavors in libraries
Teaching DH with faculty to students (undergraduate and graduate) and faculty
Helping students working with data
Managing the DH products of the data life cycle
Issues surrounding humanities data collection development and management
Relationships of data curation and digital libraries in DH
Issues in curation, preservation, sustainability, and access of DH data, projects, and products
Linked data, open access, and libraries
Librarian and staff development for non-traditional roles
Teaching DH in academic libraries
Project collaboration efforts with undergraduates, graduate students, and faculty
Data literacy for librarians
The lack of diversity of librarians and how it impacts DH development
Advocating and supporting DH across the institution
Developing institutional repositories for DH
Creating DH scholarship from the birth of digital objects
Consortial collaborations on DH projects
Establishing best practices for dh labs, networks, and services
Assessing, evaluating, and peer reviewing DH projects and librarians.
Articles may be theoretical or ideological discussions, case studies, best practices, research studies, and opinion pieces or position papers.
Please submit proposals to Kevin Gunn (firstname.lastname@example.org) by August 17, 2016; please do not use Scholar One for submitting proposals. First drafts of accepted proposals will be due by February 1, 2017 with the issue being published in the fall of 2017. Feel free to contact the editors with any questions that you may have.
Kevin Gunn, Catholic University of America
Jason Paul, St. Olaf College
The Transformational Initiative for Graduate Education and Research (TIGER) at the General Library of the University of Puerto Rico-Mayaguez (UPRM) seeks an enthusiastic and creative Research Services Librarian to join our recently created Graduate Research and Innovation Center (GRIC).
The Research Services Librarian works to advance the goals and objectives of Center and leads the creation and successful organization of instructional activities, collaborates to envision and implement scholarly communication services and assists faculty, postdoctoral researchers, and graduate students in managing the lifecycle of data resulting from all types of projects. This initiative is funded by a five year grant awarded by the Promoting Postbaccalaureate Opportunities for Hispanic Americans Program (PPOHA), Title V, Part B, of the U.S. Department of Education.
The Research Services Librarian will build relationships and collaborate with the GRIC personnel and library liaisons as well as with project students and staff. This is a Librarian I position that will be renewed annually (based upon performance evaluation) for the duration of the project with a progressive institutionalization commitment starting on October 1st, 2016. .
The Mayaguez Campus of the University of Puerto Rico is located in the western part of the island. Our library provides a broad array of services, collections and resources for a community of approximately 12,100 students and supports more than 95 academic programs. An overview of the library and the university can be obtained through http://www.uprm.edu/library/.
Master’s degree in library or information science (MLS, MIS, MLIS) from an ALA (American Library Association)-accredited program • Fully bilingual in English and Spanish • Excellent interpersonal and communication skills and ability to work well with a diverse academic community • Experience working in reference and instruction in an academic/research library and strong assessment and user-centered service orientation • Demonstrated experience working across organizational boundaries and managing complex stakeholder groups to move projects forward • Experience with training, scheduling and supervising at various settings • Ability to work creatively, collaboratively and effectively on teams and on independent assignments • Experience with website creation and design in a CMS environment and accessibility and compliance issues • Strong organizational skills and ability to manage multiple priorities.
Second master’s degree, doctorate or formal courses leading to a doctorate degree from an accredited university
PRIMARY RESPONSIBILITIES AND DUTIES
Manages daily operations, coordinates activities, and services related to the GRIC and contributes to the continuing implementation of TIGER goals and objectives.
Works closely with liaison and teaching librarians to apply emerging technologies in the design, delivery, and maintenance of high-quality subject guides, digital collection, learning objects, online tutorials, workshops, seminars, mobile and social media interfaces and applications.
Provide support to faculty and graduate students through the integration of digital collection, resources, technologies and analytical tools with traditional resources and by offering user-centered consultation and specialized services 4. Participates in the implementation, promotion, and assessment of the institutional repository and e-science initiative related to data storage, retrieval practices, processes, and data literacy/management.
Advises and educates campus community about author’s rights, Creative Commons licenses, copyrighted materials, open access, publishing trends and other scholarly communication issues.
Develops new services as new needs arise following trends in scholarly communication e-humanities, and e-science.
Provides and develops awareness and knowledge related to digital scholarship and research lifecycle for librarians and staff.
Actively disseminates project outcomes and participates in networking and professional development activities to keep current with emerging practices, technologies and trends.
Actively promote TIGER or GRIC related activities through social networks and other platforms as needed.
Periodically collects, analyzes, and incorporates relevant statistical data into progress reports as needed (e.g. Facebook, Twitter, Springshare, among others).
Actively collaborates with the TIGER Project Assessment Coordinator and the Springshare Administrator to create reports and tools to collect data on user needs.
Coordinates the transmission of online workshops through Google Hangouts Air with the Agricultural Experiment Station Library staff.
Collaborates in the creation of grants and external funds proposals.
Availability and flexibility to work some weeknights and weekends.
SALARY: $ 45,720.00 yearly+ (12 month year).
BENEFITS: University health insurance, 30 days of annual leave, 18 days of sick leave.
Technology Integration and Web Services Librarian
The Ferris Library for Information, Technology and Education (FLITE) at Ferris State University (Big Rapids, Michigan) invites applications for a collaborative and service-oriented Technology Integration and Web Services Librarian. The Technology Integration and Web Services Librarian ensures that library systems and web services support and enhance student learning. Primary responsibilities include management and design of the library website’s architecture, oversight of the technical and administrative aspects of the library management system and other library enterprise applications, and the seamless integration of all library web-based services. Collaborates with other library faculty and staff to provide reliable electronic access to online resources and to improve the accessibility, usability, responsiveness, and overall user experience of the library’s website. Serves as a liaison to other campus units including Information Technology Services. The Technology Integration and Web Services Librarian is a 12-month, tenure-track faculty position based in the Collections & Access Services team and reports to the Assistant Dean for Collections & Access Services.
Integers: A signed or unsigned whole number running from -32,768 to 32,768 or from 0 to 65,535 if not signed. Integers are used anytime something needs to be counted.
Long Integer: Any whole number outside the above range. Python doesn’t distinguish between the two though many languages do. Practically, Python’s integers range from −2,147,483,648 to 2,147,483,648 or 0 to 0 to 4,294,967,295. Most of us will be very happy with this many whole numbers to choose from.
Real and Floating Point Numbers: Real numbers are signed or unsigned numbers including decimals. The numbers 2,3,4 are Integers and Real Numbers. The numbers 2.1, 2.9,3.9 are Real Numbers, but not Integers. Real Numbers can include representations of irrational numbers such as pi. Real numbers must be rational, that is a decimal number that terminates after a finite number of decimals. You will sometimes encounter the term Floating Point Numbers. This is a technical term referring to the way that large Real Numbers are represented in a computer. Python hides this detail from you so Real and Floating Point are used intercangeably in this language.
Binary Numbers: And Octal and Hexadecimal. These are numbers used internally by computers. You will run into these values fairly often. For instance, when you see color values in HTML such as “FFFFFF” or “0000FF”,
Hexadecimal and Octal are used because humans can read them without too much trouble and they are compromise between what computers process and what we can read. Any time you see something in Octal or Hexadecimal, you are looking at something that interfaces with the lower levels of a computer. You will most commonly use Hexadecimal numbers when dealing with Unicode character encodings. Python will interpret any number which begins with a leading zero as binary unless formatting commands have been used.
Numbers such as 7i are referred to as complex. They have a real part, the 7, and an imaginary part, i. Chance are you won’t use complex numbers unless you’re working with scientific data.
A String consists of a sequence of characters. The term String refers to how this data type is represented internally. You store text in Strings. Text can by anything, letters, words, sentences, paragraphs, numbers, just about anything.
Lists are close cousins to Strings, though you may never need to think of them that way. A list is just that, a list of things. Lists may contain any number of numbers or any number of strings. List may even contain any number of other lists. Lists are compared to arrays, but they are not the same thing. In most uses, the function the same so the difference, for our purposes, is moot. Strings are like lists in that, internally, the computer works with strings in an identical manner to lists. This is why the operations on Strings are so different from numbers.
The last main data type in the Python programming language is the dictionary. Dictionaries are map types, known in other languages as hashes, and in computer science as Associative Arrays. The best way to think of what the dictionary does is to consider a Library of Congress Call Number(something this audience is familiar with). The call number is what’s called a Key. It connects to a record which contains information about a book. The combination of keys and records, called values, comprises a dictionary. A single key will connect to a discrete group of values such as the items in this record. Dictionaries will be touched on in the next lesson in some detail in the next course. These are fairly advanced data structures and require a solid understanding a programming fundamentals in order to be used properly.
Statements, an Overview
Programs consist of statements. A statement is a unit of executable code. Think of a statement like a sentence. In a nutshell, statements are how you do things in a program. Writing a program consists of breaking down a problem you want to solve into smaller pieces that you can represent as mathematical propositions and then solve. The statement is where this process gets played out. Statements themselves consist of some number of expressions involving data. Let’s see how this works.
An expression would be something like 2+2=4. This expression, however is not a complete statements. Ask Python to evaluate it and you will get the error “SyntaxError: can’t assign to operator”. What’s going on here? Basically we didn’t provide a complete statement. If we want to see the sum of 2+2 we have to write a complete statement that tells the interpreter what to do and what to do it with. The verb here is ‘print’ and the object is ‘2+2’. Ask Python to evaluate ‘print 2+2’ and it will show ‘4’. We could also throw in subject and do something a bit more detailed: ‘Sum=2+2’. In this case we are assigning the value of 2+2 to the variable, Sum. We can then do all sorts of things with Sum. We can print it. We can add other numbers to it, hand it off to a function and so on. For instance, might want to know the root of Sum. In which case we might write something like ‘print sqrt(sum)’ which will display ‘2’.
A shell is essentially a user interface that provides you access to a system’s features. Normally, this means access to an Operating System. In cases like this, the shell provides you access to the Python programming environment.
Anything preceed by a “#” is not interpreted or executed by the programming shell. Comments are used widely to document programs. One school of programming holds that code should be so clear that comments are uncessary.
Operations on Numbers
Expressions are discrete statements in programming that do something. They typically occupy one line of code, though programmers will sometimes squeeze more in. This is generally bad form and can really make your program a mess. Expressions consist of operations and data or rather data and operations on them. So, what can you do with numbers? Here is a concise list of the basic operations for integers and real numbers of all types:
Addition: z= x + y
Subtraction: z = x – y
Multiplication: z = x * y. Here the asterisk serves as the ‘X’ multiplication symbol from grade school.
Division: z = x/y. Division.
Exponents: z = x ** y or xy, x to the y power.
Operations have an order of precedence which follows the algebraic order of precedence. The order can be remembered by the old Algebra mnenomic, Please Excuse My Dear Aunt Sally which is remeinds you that the order of operations is:
Operations on Strings
Strings are strange creatures as I’ve noted before. They have their own operations and the arithmetic operations you saw earlier don’t behave the same way with strings.
Putting Expressions Together to Make Statements
As I noted earlier, all computer languages, and natural languages, possess pragmatics, larger scale structures which reduce ambiguity by providing context. This is a fancy way of saying just as sentences posses rules of syntax to make able to be comprehended, larger documents have similar rules. Computer Programs are no different. Here’s a break down of the structure of programs in Python, in a general sense.
Programs consist of one or more modules.
Modules consist of one or more statements.
Statements consist of one or more expressions.
Expressions create and/or manipulate objects(and variables of all kinds).
Modules and Programs are for the next class in the series, though we will survey these larger structures next lesson. For now, we’ll focus on statements and expressions. Actually, we’ve already started with expressions above. In Python, statements can do three things.
Assign a variable
Change a variable
Take an action
Variable Names and Reserved Words
Now that we’ve seen some variable assignments, let’s talk about best practices. First off, aside from reserved words, variable names can be almost any combination of letters, numbers and punctuation marks. You, however, should never ever, use the following punctuation marks in variable names:
These punctuation marks tends to be operators and characters that have special meanings in most computer languages. The other issue is reserved words. What are “reserved words”? They are words that Python interprets as commands. Pythons reservers the following words.:
True: A special value set aside for boolean values
False: The other special value set aside for boolean vaules
None: The logical equivalent of 0
and: a way of combining logical conditions
as: describes how modules are imported
assert: a way of forcing something to take on a certain value. Used in debugging of large programs
break: breaks out of a loop and goes on with the rest of the program
class: declares a class for object oriented design. For now, just remember not to use this variable name
continue: returns to the top of the loop and keeps on going again
def: declares functions which allow you to modularize your code.
elif: else if, a cotnrol structure we’ll see next lesson
else: as above
except: another control structure
finally: a loop control structure
for: a loop control structure
from: used to import modules
global: a scoping statement
if: a control structure/li>
in: used in for each loops
is: a logical operator
lamda: like def, but weird. It defines a function in a single line. I will not teach this becuase it is icky. If you ever learn Perl you will see this sort of thing a lot and you will hate it, but that’s just my personal opinion.
nonlocal: a scoping command
not: a logical operator
or: another logical operator
pass: does nothing. Used as placeholder
raise: raises an error. This is used to write custom error messages. Your programs may have conditions which would be considered invalid based on our business situation. The interpreter may not consider them errors, but you might not want your user to do something so you ‘raise’ an exception and stop the program.
return: tells a function to return a value
try: this is part of an error testing statement
while: starts a while loop
with: a context manager. This will be covered in the course after the next one in this series
yield: works like return
Variable names should be meaningful. Let’s say I have to track a person’s driver license number. explanatory names like ‘driverLicenseNumber’.
Use case to make your variable names readable. Python is case sensitive, meaning a variable named ‘cat’ is different from named ‘Cat’. If you use more than one word to name variable, start of lower case the change case on the second word. For instance “bigCats = [‘Tiger’,’Lion’,’Cougar’, ‘Desmond’]”. The common practice used by programmers in many settings is that variables start with lowercase and functions(methods and so on) start with upper case. This is called “Camel Case” for its lumpy, the humpy appearance. Now, as it happens, there is something of a religious debate over this. Many Python programmers prefer to keep everything lower case and join words in a name by underscores such as “big_cats”. Use whichever is easiest or looks the nicest to you.
Variable names should be unique. Do not reuse names. This will cause confusion later on.
Python conventions. Python, as with any other programming language, has culture built up around it. That means there are some conventions surrounding variable naming. Two leading underscores, __X, denote system variables which have special meaning to the interpreter. So avoid using this for your own variables. There may be a time and place, but that’s for an advanced prorgramming course. A single underscore _X indicates to other programmers that this a fundamental variable and that they mess with it at their own peril.
Avoid starting variable names with a number. This may or may not return an error. It can also mislead anyone reading your program.
“A foolish consistency is the hobgoblin of little minds”. But not to programming minds. Consistency helps the readability of code a great deal. Once you start a system, stick with it.
Putting together valid statements can be a little hard at first. There’s a grammar to them. Thus far, we’ve mainly been workign with expressions such as “x = x+1”. You can think of expression as nouns. We’ve clearly defined x, but how do we look inside? For that we need to give it a verb, the print command. We would then write “print x”. However we can skip the middle statement and print an expression such as “print x + 1”. The interpreter evaluates this per the order of operations I laid out earlier. However, once that expression is evaluated, it then applies the verb, “print”, to that expression.
Print is a function that comes with the Python distribution. There are many more and you can create your own. We’ll cover that a bit in next lesson. Let’s look at little more at the grammar of a statement. Consider:
x = sin(b)
Assume that b has been defined elsewhere. x is the subject, b is the object and sin is the verb. Python will go to the right side of the equal sign first. It will then go to the inside of the function and evaluate what’s there first. It then evaluates the value of the function and finishes by setting x to that value. What about something like this?
Python evaluates from the inside out according to the rules of operation. Very complex statements can be built up this way.
x = sin(log((x + 3)/(e**2)))
Regardless of what this expression evaluates to (I don’t actually know), Python starts with the innermost parentheses, then works through the value of e squared then adds 3 to x and divides the result by e squared. With that worked out, it takes the logarithm of the result and takessthe sine of that before setting x to the final result.What you cannot do is execute more than one statement on a line. No more than one verb on a line. In this context, a verb is an assignment, or a command acting on an expression
Call up your copy of Think Python or go to the website at http://www.greenteapress.com/thinkpython/html/. Read Chapter 2. This will reiterate much of what I’ve presnted here, but this will help cement the content into you minds. Skip section 2.6 because IPython treats everything as script mode. IPyton provides you with the illusion of interactive, but everything happens asynchronously. This means that any action you type in will not instantaneously resolve as it would if you were running Python interactively on your computer. You will have to use print statements to see the results of your work.
Your assignment consists of the following:
Exercise 1 from Chapter 2 of Think Python. If you type an integer with a leading zero, you might get a confusing error:
<<< zipcode = 02492
SyntaxError: invalid token
Other numbers seem to work, but the results are bizarre:
<<< zipcode = 02132
Can you figure out what is going on? Hint: display the values 01, 010, 0100 and 01000.
Exercise 3 from Chapter 2 of Think Python.Assume that we execute the following assignment statements:
width = 17
height = 12.0
delimiter = ‘.’
For each of the following expressions, write the value of the expression and the type (of the value of the expression).
1 + 2 5
Exercise 4 from Capter 2 of Think Python. Practice using the Python interpreter as a calculator:
1. The volume of a sphere with radius r is 4/3 π r3. What is the volume of a sphere with radius 5? Hint: 392.7 is wrong!
2. Suppose the cover price of a book is $24.95, but bookstores get a 40% discount. Shipping costs $3 for the first copy and 75 cents for each additional copy. What is the total wholesale cost for 60 copies?
3/ If I leave my house at 6:52 am and run 1 mile at an easy pace (8:15 per mile), then 3 miles at tempo (7:12 per mile) and 1 mile at easy pace again, what time do I get home for breakfast?
In your IPython notebook Create a markdown cell and write up your exercise in there. Just copy it from the textbook or from the above write up. Next ceate a code cell and do your work in there. Please, comment your work thoroughly. You cannot provide too many comments. Use print statements to see the outcome of your work.
Our beginning programming course, CNA 267, is now using Python as the programming language. Students learn to work with decision and loop control structures, variables, lists (arrays) and procedures, etc. Python is becoming one of the most widely-accepted languages for business professionals and scientists.
Please inform your students (who need to learn programming) of this course. It is being offered during spring semester, as well as next fall.