CS 170 * Intro to Programming for Scientists and

advertisement
CS 355 – PROGRAMMING
LANGUAGES
Dr. Xenia Mountrouidou
Assistant Professor
Computing Science
Jacksonville University
CS150
2
Who am I?
• Dr. X – Computer Scientist
• PhD at North Carolina State University – Optical networks
performance
• Worked at IBM – Software Performance Engineer
• Post doc at College of William and Mary – research on
performance and power savings for hard disk drives
• Scuba diver, manga comics collector, science fiction
reader
CS150
Who am I?
3
CS 340
4
Course Objectives
• Students develop the ability to implement algorithms using 5
•
•
•
•
•
different languages (C, Java/C#, LISP, Python, one language of
your choice).
Students gain the confidence to learn a new programming
language well enough to implement simple algorithms.
Students learn the history of programming languages and how
they were developed.
Students develop knowledge of various concepts and issues
pertaining to programming languages.
Student gain knowledge of the implementation of programming
languages.
Students gain knowledge of the strengths and weaknesses of
programming languages as well as the domains for which they
are intended.
CS 340
5
Lectures
• We meet at 10:00-10:50, every M/W/F, at Merritt Penticoff
Science Bld, Room 122
• Check the schedule on the class webpage
• Reading and examples will be posted online on
Blackboard or the class website
• Lectures will be interactive. This means:
• You will need to study the new material before every lecture (slides
and book or online material)
• We will have labs every week so that you can work on analytical
and programming skills during the lecture
CS 340
6
Lectures
• Interactive!
• Ask Questions
• Answer my questions
• During lectures I may demonstrate coding examples
• I encourage you to type the coding examples on your
computer
• Choices:
• Cell phones – MUST be silenced
• Using your cellphone, FB, Ebay, Twitter, Pintrest etc. … your choice
CS 340
7
How to get help
• Visit me during my office hours!
•
•
•
•
M/W/F 11:00 -12:30 am
Merritt Penticoff, 2nd floor, Room 203
Check the class website and BB frequently
Use the textbook - “Concepts of Programming
Languages”, 10th edition, Robert W. Sebesta, Pearson
Become members of the CS club - Frequent tutoring
sessions
Experiment with code. It’s Fun!
Dr. X’s Schedule
9
CS 340
Grading
Labs
20%
Homework
40%
Project
40%
Total
100%
Homework and Programming projects will be posted
online on BlackBoard and on the class website
 You will upload your completed assignments on
BlackBoard (do not send me your solution on email)

CS 340
10
Programming Project
• It involves
• Design
• Analytical Thinking
• Some Coding
• It will be done in pairs
You need to send me an e-mail until the end of the second week
of classes with your team members
• Each team member will evaluate his/her team mate
Project topics
A programming language of your interest that we did not
cover:
• Hardware Programming Language -Verilog or VHDL
• Command Line Interface Languages - bash or csh or
tcsh
• Data Oriented Languages – Perl, AWK
• Array Language – Fortran
• Numerical Analysis Languages – Matlab or R
• Logic - Prolog
• Markup - JSTL, XSLT
Project Deliverables
• Design and Plan (10%)
• Choose the PL you will work on
• Make a plan: how will you demonstrate the basic features of the PL?
• Presentation: 15 – 20 mins (10%)
• This is your moment to shine!
• We will be interested in learning about the PL you have chosen so the
presentation should be like a mini lecture
• Final project submission (20%)
• Code
• Report
• README
• Team review
• Competition! You will be immortalized in the course website and
receive a prize. The competition result will not affect your grade… but
it can be a nice bullet in your resume.
CS 340
13
Homework
• Four homework assignments (10% of your grade for each
assignment)
• They will involve:
• Analytical thinking
• Programming
• Homework will be completed individually (please read the
collaboration policies)
CS 340
14
Policies
• Cheating means “submitting, without proper attribution,
any computer code that is directly traceable to the
computer code written by another person.”
• Or even better:
• “Any form of cheating, including concealed notes during exams, copying or
allowing others to copy from an exam, students substituting for one
another in exams, submission of another person’s work for evaluation,
preparing work for another person’s submission, unauthorized
collaboration on an assignment, submission of the same or substantially
similar work for two courses without the permission of the professors.
Plagiarism is a form of Academic Misconduct that involves taking either
direct quotes or slightly altered, paraphrased material from a source
without proper citations and thereby failing to credit the original author.
Cutting and pasting from any source including the Internet, as well as
purchasing papers, are forms of plagiarism.”
• I give students F grade in the specific homework
• A second cheating attempt will be escalated to the chair of
the division of Science and Math
CS 340
Policies
• Read the collaboration policy carefully.
• Late policy:
2% is reduced by every day the assignment is late
15
CS 340
Principles of Pair Programming
Dilbert.com
16
CS 340
17
Principles of Pair Programming
• All I Really Need to Know about pair programming I
Learned in Kindergarten
• Share everything.
• Play fair.
• Don’t hit people.
• Put things back where you found them.
• Clean up your own mess.
• Don’t take things that aren’t yours.
• Say you’re sorry when you hurt somebody.
Questions about the
course???
Why learn about PLs?
• Increase your ability to express ideas
• Improve your background for choosing appropriate
languages
• Increase your ability to learn new languages
• Better understanding of significance of implementation
• Better use of languages that you already know
Programming Domains
• Scientific applications
• Large numbers of floating point computations; use of arrays
• Fortran
• Business applications
• Produce reports, use decimal numbers and characters
• COBOL
• Artificial intelligence
• Symbols rather than numbers manipulated; use of linked lists
• LISP
• Systems programming
• Need efficiency because of continuous use
• C
• Web Software
• Eclectic collection of languages: markup (e.g., HTML), scripting (e.g.,
PHP), general-purpose (e.g., Java)
Language Evaluation Criteria
• Readability: the ease with which programs can be read
and understood
• Writability: the ease with which a language can be used
to create programs
• Reliability: conformance to specifications (i.e., performs
to its specifications)
• Cost: the ultimate total cost
Evaluation Criteria: Readability
• Overall simplicity
• A manageable set of features and constructs
• Minimal feature multiplicity
• Minimal operator overloading
• Orthogonality
• A relatively small set of primitive constructs can be combined in a
relatively small number of ways
• Every possible combination is legal
• Data types
• Adequate predefined data types
• Syntax considerations
• Identifier forms: flexible composition
• Special words and methods of forming compound statements
• Form and meaning: self-descriptive constructs, meaningful keywords
Evaluation Criteria: Writability
• Simplicity and orthogonality
• Few constructs, a small number of primitives, a small set of rules
for combining them
• Support for abstraction
• The ability to define and use complex structures or operations in
ways that allow details to be ignored
• Expressivity
• A set of relatively convenient ways of specifying operations
• Strength and number of operators and predefined functions
Evaluation Criteria: Reliability
• Type checking
• Testing for type errors
• Exception handling
• Intercept run-time errors and take corrective measures
• Aliasing
• Presence of two or more distinct referencing methods for the same
memory location
• Readability and writability
• A language that does not support “natural” ways of expressing an
algorithm will require the use of “unnatural” approaches, and
hence reduced reliability
Evaluation Criteria: Cost
• Training programmers to use the language
• Writing programs (closeness to particular applications)
• Compiling programs
• Executing programs
• Language implementation system: availability of free
compilers
• Reliability: poor reliability leads to high costs
• Maintaining programs
Evaluation Criteria: Others
• Portability
• The ease with which programs can be moved from one
implementation to another
• Generality
• The applicability to a wide range of applications
• Well-definedness
• The completeness and precision of the language’s official definition
Summary
• The study of programming languages is valuable for a
number of reasons:
• Increase our capacity to use different constructs
• Enable us to choose languages more intelligently
• Makes learning new languages easier
• Most important criteria for evaluating programming
languages include:
• Readability, writability, reliability, cost
• This will be a fun class!
• Please read syllabus, policies, and ask me if you have any
questions or concerns
Questions?……
Download