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?……