eda-ricercatore / sardegna-scala

A repository of Scala programs that I have developed to hone my skills in functional programming. Three primary goals of this endeavor are: to develop (quasi-) automated techniques for compiler/parser development; to develop an automated framework for data analytics; and to develop faster prototypes for design automation.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

sardegna-scala

A repository of Scala programs that I have developed to hone my skills in functional programming.

Three primary goals of this endeavor are to:

  • develop (quasi-) automated techniques for compiler/parser development;
  • develop an automated framework for statistical analysis/computation of experimental results;
  • develop faster prototypes for design automation, including microarchitecture synthesis, formal verification, and decision procedures (or automated reasoning); and
  • develop retargetable, parallel compilers for the RISC-V instruction set architecture (ISA).

Books (Table of Content):

Scala Resources

BibTeX keys, from my BibTeX database, are used to identify publications that I can use to learn and revise Scala.

Books

Texbook-style Books for Learning Scala

  • Alexander2018
    • "Hello, Scala: A swift introduction to a scalable language"
  • Alexandre2014
    • "Scala for Java Developers: Build reactive, scalable applications and integrate Java code with the power of Scala"
    • Advanced book on shipping enterprise software, software for "Big Data," or software for web services.
  • Chiusano2015
    • "Functional Programming in Scala"
    • Good textbook for learning Scala.
      • Includes data structures for functional programming.
      • Parallel programming in Scala.
      • Parser development in Scala.
  • Davis2016b
    • "Modern Programming Made Easy: Using Java, Scala, Groovy, and JavaScript"
  • Horstmann2012a
    • "Scala for the Impatient"
    • Very good introductory textbook for learning Scala.
      • Includes going through all important aspects of object-oriented functional programming.
      • Object-oriented functional programming with classes, objects, inheritance, traits, and annotations.
      • Data structures/types, such as: maps; and tuples. Also, see: collections, type parameters, advanced types.
      • Use of packages and import statements.
      • File operations.
      • Regular expressions.
      • Operators.
      • Higher-order functions.
      • Pattern matching.
      • Case studies (souped up switch statements)
      • XML processing.
      • Parsing.
      • Actors.
      • Implicits.
      • Delimited continuations.
  • Horstmann2017
    • "Scala for the Impatient: Covers Scala 2.12"
  • Hunt2014
    • "A Beginner's Guide to Scala, Object Orientation and Functional Programming"
    • Object-oriented programming.
    • Functional programming.
    • Data structures/types for functional programming.
    • Exception handling.
    • Software testing.
    • GUI development.
    • Java and Scala interoperability.
  • Hunt2018
    • "A Beginner's Guide to Scala, Object Orientation and Functional Programming"
  • Layka2015
    • "Beginning Scala"
    • Functional programming.
    • Parser development.
    • Pattern matching.
    • Parallel programming, or concurrent programming.
    • Scalable software development/engineering.
  • Lewis2013a, Lewis2017
    • "Introduction to the Art of Programming Using Scala"
    • Functional programming
    • Parser development.
    • XML.
    • Object-oriented programming.
    • Parallel programming, or concurrent programming.
    • Data structures/types for functional programming.
    • Computer networking.
    • Scala-based software development/engineering.
  • Loverdos2010
    • "Steps in Scala: An Introduction to Object-Functional Programming"
    • Functional programming.
    • Parser development.
    • XML.
    • GUI development.
    • Parallel programming, or concurrent programming.
    • Pattern matching.
  • Odersky2010 & Odersky2008 & Odersky2016
    • "Programming in Scala: A Comprehensive Step-by-Step Guide"
    • Functional programming.
    • Object-oriented programming.
    • Scala-based software development/engineering.
    • Parallel programming, or concurrent programming.
    • XML.
    • Parser development.
    • GUI development.
    • Data analytics.
    • Scripting on UNIX-like OSes.
  • Pollak2009
    • "Beginning Scala".
    • Functional programming.
    • Parser development.
    • Pattern matching.
    • Parallel programming, or concurrent programming.
    • Scalable software development/engineering.
  • Raychaudhuri2013
    • "Scala in Action"
    • Object-oriented programming.
    • Data structures/types for functional programming.
    • Functional programming.
    • Parallel programming, or concurrent programming.
    • Data analytics.
    • Database management.
    • Scala-based software development/engineering.
    • Java and Scala interoperability.
  • Subramaniam2008
    • "Programming Scala: Tackle Multi-Core Complexity on the JVM"
    • Object-oriented programming.
    • Data structures/types for functional programming.
    • Functional programming.
    • Parallel programming, or concurrent programming.
    • Pattern matching.
    • Regular expressions.
    • Java and Scala interoperability.
    • Scala-based software development/engineering.
  • Subramaniam2015
    • "Pragmatic Scala: Create Expressive, Concise, and Scalable Applications"
    • Object-oriented programming.
    • Data structures/types for functional programming.
    • Functional programming.
    • Parallel programming, or concurrent programming.
    • Pattern matching.
    • Regular expressions.
    • Java and Scala interoperability.
    • Scala-based software development/engineering.
  • Suereth2012
    • "Scala in Depth"
    • Object-oriented programming.
    • Functional programming.
    • Java and Scala interoperability.
  • Swartz2015
    • "Learning Scala: Practical Functional Programming for the JVM"
    • Object-oriented programming.
    • Functional programming.
  • Tate2010
    • "Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages"
    • Simple and short tutorial.
  • Torra2016
    • "Scala: From a Functional Programming Perspective, An Introduction to the Programming Language"
  • Wampler2009 & Wampler2015
    • "Programming Scala: Scalability = Functional Programming + Objects"
    • Object-oriented programming.
    • Functional programming.
    • Pattern matching.
    • Parser development.
    • Scala-based software development/engineering.
    • Java and Scala interoperability.
    • Scala solutions for "Big Data," data science, data engineering, data analytics, and data visualization.
    • Parallel programming, or concurrent programming.
  • Weston2018
    • "Scala for Java Developers: A Practical Primer"

For Learning Scala: Functional Programming

  • Khot2015
    • "Scala Functional Programming Patterns: Grok and perform effective functional programming in Scala"
  • Chiusano2015
    • "Functional Programming in Scala"
    • Good textbook for learning Scala.
      • Includes data structures for functional programming.
      • Parallel programming in Scala.
      • Parser development in Scala.
  • Torra2016
    • "Scala: From a Functional Programming Perspective, An Introduction to the Programming Language"

For Learning Scala: Parallel/Concurrent Programming

  • Prokopec2014
    • "Learning Concurrent Programming in Scala: Learn the art of building intricate, modern, scalable concurrent applications using Scala"
    • Parallel programming, or concurrent programming.
    • Source Code for Examples
  • Sathyanarayanan2016
    • "Reactive Programming with Scala and Akka: Harness reactive programming to build scalable and fault-tolerant distributed systems using Scala and Akka"
    • Parallel programming, or concurrent programming.
  • Theron2016
    • "Scala High Performance Programming: Write efficient, clean, and powerful Scala code and create high-performing applications that your users will love"
    • Parallel programming, or concurrent programming.
  • Haller2011
    • "Actors in Scala: Concurrent programming for the multi-core era"
    • Concurrent programming.

Compendium of Scala Solutions

  • Alexander2013a
    • "Scala Cookbook: Recipes for Object-Oriented and Functional Programming"
    • Scala solutions for different problems/objectives.
  • Manivannan2015
    • "Scala Data Analysis Cookbook: Navigate the world of data analysis, visualization, and machine learning with over 100 hands-on Scala recipes"
    • Scala solutions for "Big Data," data science, data engineering, data analytics, and data visualization.

Scala-based software engineering

  • Bedrytski2016
    • "Professional Scala"
    • Good textbook for Scala-based software engineering.
  • BevilacquaLinn2013
    • "Functional Programming Patterns in Scala and Clojure: Write Lean Programs for the JVM"
    • Design patterns for Scala and Clojure.
  • Hinojosa2013
    • "Testing in Scala: Scala Tools for Behavior-Driven Development"
    • Software testing for Scala software.
    • Check if it includes Scala-driven software testing of C++ code.
  • Hunt2013a
    • "Scala Design Patterns: Patterns for Practical Reuse and Design"
  • Nikolov2016
    • "Scala Design Patterns: Write efficient, clean, and reusable code with Scala"
  • Suereth2016
    • "sbt in Action: The simple Scala build tool"

Scala-based Data Analytics

  • Bugnion2016
    • "Scala for Data Science: Leverage the power of Scala to build scalable, robust, data science applications"
    • Shows readers how to combine Scala software with monolithic/distributed databases.
  • Kozlov2016
    • "Mastering Scala Machine Learning: Advance your skills in efficient data analysis and data processing using the powerful tools of Scala, Spark, and Hadoop"
  • Manivannan2015
    • "Scala Data Analysis Cookbook: Navigate the world of data analysis, visualization, and machine learning with over 100 hands-on Scala recipes"
    • Scala solutions for "Big Data," data science, data engineering, data analytics, and data visualization.
  • Nicolas2014
    • "Scala for Machine Learning: Leverage Scala and Machine Learning to construct and study systems that can learn from data"
    • Scala solutions for machine learning applications.
  • Ryza2015
    • "Advanced Analytics with Spark: Patterns for Learning from Data at Scale"

Computational Science, or Scientific Computing

  • Jancauskas2016
    • "Scientific Computing with Scala: Learn to solve scientific computing problems using Scala and its numerical computing, data processing, concurrency, and plotting libraries"
    • Computational science, or scientific computing.
      • Numerical computing, numerical computation, numerical methods.
    • Big data, data science, data engineering, information systems.
      • Data visualization.
    • Interactive computing
    • Parallel programming, and concurrent programming.
    • Cluster computing
    • Publisher's GitHub respository for the book on Scala

Computational Engineering

Advanced Books

  • Alexandre2014
    • "Scala for Java Developers: Build reactive, scalable applications and integrate Java code with the power of Scala"
    • Advanced book on shipping enterprise software, software for "Big Data," or software for web services.
  • Gogoi2016
    • "Scala Microservices: Use the reactive approach to build mission critical distributed systems with Scala"
  • Hilton2014
    • "Play for Scala: Covers Play 2"
    • About the Play Framework for building web applications with Java and Scala.
  • Riti2018
    • "Practical Scala DSLs: Real-World Applications Using Domain Specific Languages"
    • For working with domain-specific languages.
  • Sood2016
    • "Scala Test-Driven Development: Build robust Scala applications by implementing the fundamentals of test-driven development in your workflow"
  • Vernon2016
    • "Reactive Messaging Patterns with the Actor Model: Applications and Integration in Scala and Akka"

Collections of Puzzles

  • Phillips2014a
    • "Scala Puzzlers: The fun path to deeper understanding"

Terrible Books

  • Archer2015
    • "Scala programming: Learning Scala fast!"
  • Gimson2015
    • "Scala Programming: Learn Scala Programming FAST and EASY"

Books to Cover (In Order)

  • Horstmann2012a
    • "Scala for the Impatient"
  • Layka2015
    • "Beginning Scala"
    • Also, see Pollak2009, "Beginning Scala"
  • Loverdos2010
    • "Steps in Scala: An Introduction to Object-Functional Programming"
  • Odersky2010 & Odersky2008 & Odersky2016
    • "Programming in Scala: A Comprehensive Step-by-Step Guide"
  • Chiusano2015
    • "Functional Programming in Scala"
  • Raychaudhuri2013
    • "Scala in Action"
  • Subramaniam2008
    • "Programming Scala: Tackle Multi-Core Complexity on the JVM"
  • Suereth2012
    • "Scala in Depth"
  • Swartz2015
    • "Learning Scala: Practical Functional Programming for the JVM"
  • Wampler2009 & Wampler2015
    • "Programming Scala: Scalability = Functional Programming + Objects"
  • Prokopec2014
    • "Learning Concurrent Programming in Scala: Learn the art of building intricate, modern, scalable concurrent applications using Scala"
  • Theron2016
    • "Scala High Performance Programming: Write efficient, clean, and powerful Scala code and create high-performing applications that your users will love"
  • Manivannan2015
    • "Scala Data Analysis Cookbook: Navigate the world of data analysis, visualization, and machine learning with over 100 hands-on Scala recipes"
  • BevilacquaLinn2013
    • "Functional Programming Patterns in Scala and Clojure: Write Lean Programs for the JVM"
  • Hinojosa2013
    • "Testing in Scala: Scala Tools for Behavior-Driven Development"
  • Suereth2016
    • "sbt in Action: The simple Scala build tool"
  • Bugnion2016
    • "Scala for Data Science: Leverage the power of Scala to build scalable, robust, data science applications"
  • Nicolas2014
    • "Scala for Machine Learning: Leverage Scala and Machine Learning to construct and study systems that can learn from data"
  • Khot2015
    • "Scala Functional Programming Patterns: Grok and perform effective functional programming in Scala"
  • Alexandre2014
    • "Scala for Java Developers: Build reactive, scalable applications and integrate Java code with the power of Scala"
  • Nikolov2016
    • "Scala Design Patterns: Write efficient, clean, and reusable code with Scala"
  • Haller2011
    • "Actors in Scala: Concurrent programming for the multi-core era"
  • Alexander2013a
    • "Scala Cookbook: Recipes for Object-Oriented and Functional Programming"
  • Hunt2013a
    • "Scala Design Patterns: Patterns for Practical Reuse and Design"
  • Lewis2017
    • "Introduction to Programming and Problem-Solving Using Scala"

Books Covered

  • BibTeX key

    • Title of Book.
  • Tate2010

    • "Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages"

Books Not Covered Yet

  • Bedrytski2016
    • "Professional Scala"
  • Horstmann2017
    • "Scala for the Impatient"
  • Hunt2014
    • "A Beginner's Guide to Scala, Object Orientation and Functional Programming"
  • Jancauskas2016
    • "Scientific Computing with Scala: Learn to solve scientific computing problems using Scala and its numerical computing, data processing, concurrency, and plotting libraries"
  • Phillips2014a
    • "Scala Puzzlers: The fun path to deeper understanding"
  • Sathyanarayanan2016
    • "Reactive Programming with Scala and Akka: Harness reactive programming to build scalable and fault-tolerant distributed systems using Scala and Akka"
  • Subramaniam2015
    • "Pragmatic Scala: Create Expressive, Concise, and Scalable Applications"
  • Torra2016
    • "Scala: From a Functional Programming Perspective, An Introduction to the Programming Language"

Author Information

The MIT License (MIT)

Copyright (c) <2016> Zhiyang Ong

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Email address: echo "cukj -wb- 23wU4X5M589 TROJANS cqkH wiuz2y 0f Mw Stanford" | awk '{ sub("23wU4X5M589","F.d_c_b. ") sub("Stanford","d0mA1n"); print $5, $2, $8; for (i=1; i<=1; i++) print "6\b"; print $9, $7, $6 }' | sed y/kqcbuHwM62z/gnotrzadqmC/ | tr 'q' ' ' | tr -d [:cntrl:] | tr -d 'ir' | tr y "\n" Don't compromise my computing accounts. You have been warned.

About

A repository of Scala programs that I have developed to hone my skills in functional programming. Three primary goals of this endeavor are: to develop (quasi-) automated techniques for compiler/parser development; to develop an automated framework for data analytics; and to develop faster prototypes for design automation.


Languages

Language:JavaScript 75.8%Language:HTML 10.4%Language:CSS 7.3%Language:Scala 3.4%Language:Makefile 2.3%Language:TeX 0.8%