Automated Builds. Macros

Size: px
Start display at page:

Download "Automated Builds. Macros"

Transcription

1 Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See for more information.

2 Manage tasks and dependencies

3 Manage tasks and dependencies paper.pdf paper.wdp figure-1.svg figure-2.svg summary-1.dat data-1-1.dat data-1-2.dat data-1-3.dat

4 "must conform to university style"

5 "must conform to university style" paper.pdf euphoric.wps paper.wdp figure-1.svg figure-2.svg

6 "must conform to university style" paper.pdf euphoric.wps paper.wdp figure-1.svg figure-2.svg C:\papers home

7 "must conform to university style" paper.pdf euphoric.wps paper.wdp figure-1.svg figure-2.svg C:\papers home /lib/styles/ lab

8 "must conform to university style" paper.pdf euphoric.wps paper.wdp figure-1.svg figure-2.svg euphoric.fig data-1-1.dat data-1-2.dat

9 "must conform to university style" paper.pdf euphoric.wps paper.wdp figure-1.svg figure-2.svg C:\papers home euphoric.fig data-1-1.dat data-1-2.dat

10 "must conform to university style" paper.pdf euphoric.wps paper.wdp figure-1.svg figure-2.svg euphoric.fig data-1-1.dat data-1-2.dat C:\papers home /lib/styles/ lab

11 Makefile so far # false-dependencies.mk paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf $< figure-%.svg : summary-%.dat sgr -N -r $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@

12 Add directories for working at home # with-directories-at-home.mk paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf --style c:/papers/euphoric.wps $< figure-%.svg : summary-%.dat sgr -N -r -s c:/papers/euphoric.fig $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@

13 Add directories for working at home # with-directories-at-home.mk paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf --style c:/papers/euphoric.wps $< figure-%.svg : summary-%.dat sgr -N -r -s c:/papers/euphoric.fig $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@

14 Add directories for working at home # with-directories-at-home.mk paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf --style c:/papers/euphoric.wps $< figure-%.svg : summary-%.dat sgr -N -r -s c:/papers/euphoric.fig $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@ Usually don't list "system" files explicitly

15 Add directories for working at home # with-directories-at-home.mk paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf --style c:/papers/euphoric.wps $< figure-%.svg : summary-%.dat sgr -N -r -s c:/papers/euphoric.fig $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@ Usually don't list "system" files explicitly But what about the lab?

16 1. Write two Makefiles

17 1. Write two Makefiles Write and maintain

18 1. Write two Makefiles Write and maintain 2. Comment and uncomment lines

19 1. Write two Makefiles Write and maintain 2. Comment and uncomment lines Consistently every time

20 1. Write two Makefiles Write and maintain 2. Comment and uncomment lines Consistently every time Will create lots of noise in version control

21 1. Write two Makefiles Write and maintain 2. Comment and uncomment lines Consistently every time Will create lots of noise in 3. Refactor version control

22 Use a macro

23 Use a macro # with-macro.mk STYLE_DIR=c:/papers/ paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf --style ${STYLE_DIR}/euphoric.wps $< figure-%.svg : summary-%.dat sgr -N -r -s ${STYLE_DIR}/euphoric.fig $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@

24 Use a macro # with-macro.mk STYLE_DIR=c:/papers/ paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf --style ${STYLE_DIR}/euphoric.wps $< figure-%.svg : summary-%.dat sgr -N -r -s ${STYLE_DIR}/euphoric.fig $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@

25 Use a macro # with-macro.mk STYLE_DIR=c:/papers/ paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf --style ${STYLE_DIR}/euphoric.wps $< figure-%.svg : summary-%.dat sgr -N -r -s ${STYLE_DIR}/euphoric.fig $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@

26 Only have one thing to change

27 Only have one thing to change Consistency

28 Only have one thing to change Consistency But still have noise

29 Only have one thing to change Consistency But still have noise Must use ${MACRO} or $(MACRO), not $MACRO

30 Only have one thing to change Consistency But still have noise Must use ${MACRO} or $(MACRO), not $MACRO Make reads $MACRO is ($M)ACRO

31 Only have one thing to change Consistency But still have noise Must use ${MACRO} or $(MACRO), not $MACRO Make reads $MACRO is ($M)ACRO Which is probably just "ACRO"

32 Only have one thing to change Consistency But still have noise Must use ${MACRO} or $(MACRO), not $MACRO Make reads $MACRO is ($M)ACRO Which is probably just "ACRO" Which is probably not what you want

33 Only have one thing to change Consistency But still have noise Must use ${MACRO} or $(MACRO), not $MACRO Make reads $MACRO is ($M)ACRO Which is probably just "ACRO" Which is probably not what you want yet another legacy wart

34 Commonly define macros for control flags

35 Commonly define macros for control flags # with-lots-of-macros.mk STYLE_DIR=c:/papers/ WDP2PDF_FLAGS=--style ${STYLE_DIR}/euphoric.wps SGR_FLAGS=-N -r -s ${STYLE_DIR}/euphoric.fig paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf ${WDP2PDF_FLAGS} $< figure-%.svg : summary-%.dat sgr ${SGR_FLAGS} $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@

36 Commonly define macros for control flags # with-lots-of-macros.mk STYLE_DIR=c:/papers/ WDP2PDF_FLAGS=--style ${STYLE_DIR}/euphoric.wps SGR_FLAGS=-N -r -s ${STYLE_DIR}/euphoric.fig paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf ${WDP2PDF_FLAGS} $< figure-%.svg : summary-%.dat sgr ${SGR_FLAGS} $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@

37 Commonly define macros for control flags # with-lots-of-macros.mk STYLE_DIR=c:/papers/ WDP2PDF_FLAGS=--style ${STYLE_DIR}/euphoric.wps SGR_FLAGS=-N -r -s ${STYLE_DIR}/euphoric.fig paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf ${WDP2PDF_FLAGS} $< figure-%.svg : summary-%.dat sgr ${SGR_FLAGS} $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@

38 Now put the first macro in a separate file # config.mk STYLE_DIR=c:/papers/

39 And include it from the main file # with-include.mk include config.mk WDP2PDF_FLAGS=--style ${STYLE_DIR}/euphoric.wps SGR_FLAGS=-N -r -s ${STYLE_DIR}/euphoric.fig paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf ${WDP2PDF_FLAGS} $< figure-%.svg : summary-%.dat sgr ${SGR_FLAGS} $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@

40 And include it from the main file # with-include.mk include config.mk WDP2PDF_FLAGS=--style ${STYLE_DIR}/euphoric.wps SGR_FLAGS=-N -r -s ${STYLE_DIR}/euphoric.fig paper.pdf : paper.wdp figure-1.svg figure-2.svg wdp2pdf ${WDP2PDF_FLAGS} $< figure-%.svg : summary-%.dat sgr ${SGR_FLAGS} $@ $^ summary-%.dat : data-%-*.dat stats.py $@ $^ data-*-*.dat : stats.py touch $@

41 Actually create two configuration files

42 Actually create two configuration files # config-home.mk STYLE_DIR=c:/papers/

43 Actually create two configuration files # config-home.mk STYLE_DIR=c:/papers/ # config-lab.mk STYLE_DIR=/lib/styles

44 Actually create two configuration files # config-home.mk STYLE_DIR=c:/papers/ # config-lab.mk STYLE_DIR=/lib/styles These two files stay in version control

45 Actually create two configuration files # config-home.mk STYLE_DIR=c:/papers/ # config-lab.mk STYLE_DIR=/lib/styles These two files stay in version control Copy to create config.mk per machine

46 Home paper/ Makefile config-home.mk config-lab.mk

47 Home paper/ Makefile config-home.mk config-lab.mk config.mk

48 Home paper/ Makefile config-home.mk config-lab.mk config.mk Lab paper/ Makefile config-home.mk config-lab.mk

49 Home paper/ Makefile config-home.mk config-lab.mk config.mk Lab paper/ Makefile config-home.mk config-lab.mk config.mk

50 Home paper/ Makefile config-home.mk config-lab.mk config.mk Lab paper/ Makefile config-home.mk config-lab.mk config.mk

51 Can also define macro value on command line

52 Can also define macro value on command line $ make -DSTYLE_DIR=/lib/styles -f Makefile

53 Can also define macro value on command line $ make -DSTYLE_DIR=/lib/styles -f Makefile Generally a bad idea

54 Can also define macro value on command line $ make -DSTYLE_DIR=/lib/styles -f Makefile Generally a bad idea Have to remember to type definition each time

55 Can also define macro value on command line $ make -DSTYLE_DIR=/lib/styles -f Makefile Generally a bad idea Have to remember to type definition each time correctly

56 Can also define macro value on command line $ make -DSTYLE_DIR=/lib/styles -f Makefile Generally a bad idea Have to remember to type definition each time correctly And there's no record of the flag

57 Many other approaches

58 Many other approaches CMake and Autoconf/Automake: compile higher-level specification into a Makefile (or equivalent)

59 Many other approaches CMake and Autoconf/Automake: compile higher-level specification into a Makefile (or equivalent) Automatically discover/manage differences between machines

60 Many other approaches CMake and Autoconf/Automake: compile higher-level specification into a Makefile (or equivalent) Automatically discover/manage differences between machines But even harder to debug

61 Many other approaches CMake and Autoconf/Automake: compile higher-level specification into a Makefile (or equivalent) Automatically discover/manage differences between machines But even harder to debug A build file is a program

62 Many other approaches CMake and Autoconf/Automake: compile higher-level specification into a Makefile (or equivalent) Automatically discover/manage differences between machines But even harder to debug A build file is a program Requires the same degree of respect

63 created by Greg Wilson August 2010 Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See for more information.

Automated Builds. Rules

Automated Builds. Rules Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. Manage tasks and dependencies

More information

A simple interpreted language

A simple interpreted language Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. A simple interpreted language

More information

A list is a mutable heterogeneous sequence

A list is a mutable heterogeneous sequence Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. A list is a mutable heterogeneous

More information

The Unix Shell. Pipes and Filters

The Unix Shell. Pipes and Filters The Unix Shell Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. shell shell pwd

More information

The Unix Shell. Permissions

The Unix Shell. Permissions The Unix Shell Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. shell shell pwd,

More information

Classes and Objects. Inheritance

Classes and Objects. Inheritance Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. Interpolating time series signals

More information

The Unix Shell. Job Control

The Unix Shell. Job Control The Unix Shell Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. shell shell $

More information

The Unix Shell. Files and Directories

The Unix Shell. Files and Directories The Unix Shell Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. Run Programs Store

More information

Lab 1: Robots Allocation and Operation

Lab 1: Robots Allocation and Operation Lab 1: Robots Allocation and Operation Lab Outline The robots Login to the AIBO Network SVN checkout Starting Player playerjoy and playerv Making & Running your own client Running Clients Remotely ROS

More information

CMake & Ninja. by István Papp

CMake & Ninja. by István Papp CMake & Ninja by István Papp istvan.papp@ericsson.com Hello & Disclaimer I don t know everything (surprise!), if I stare blankly after a question, go to https://cmake.org/ Spoiler alert: or https://ninja-build.org/

More information

Sets and Dictionaries

Sets and Dictionaries Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. Let's try an experiment Let's

More information

Pattern Matching, set-up. Pattern Matching, example. Pattern Matching, set-up, cont. Lecture 9: Make Pattern Matching & Conceptual Integrity

Pattern Matching, set-up. Pattern Matching, example. Pattern Matching, set-up, cont. Lecture 9: Make Pattern Matching & Conceptual Integrity Lecture 9: Make Pattern Matching & Conceptual Integrity Kenneth M. Anderson Software Methods and Tools CSCI 3308 - Fall Semester, 2004 Pattern Matching, set-up Below is a fairly standard makefile. What

More information

Python. Directory and File Paths

Python. Directory and File Paths Copyright Software Carpentry and The University of Edinburgh 2010-2011 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information.

More information

Python. Input and Output

Python. Input and Output Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. Been using print to see what

More information

University of Energy and Natural Resources, Sunyani. Name: UBA, Felix. How to get ROMS Summer school August, 2016

University of Energy and Natural Resources, Sunyani. Name: UBA, Felix. How to get ROMS Summer school August, 2016 University of Energy and Natural Resources, Sunyani Name: UBA, Felix How to get ROMS running @ Summer school August, 2016 Introduction PRESENTATION How to download the code, Configure it for an Application,

More information

AMath 483/583 Lecture 7. Notes: Notes: Changes in uwhpsc repository. AMath 483/583 Lecture 7. Notes:

AMath 483/583 Lecture 7. Notes: Notes: Changes in uwhpsc repository. AMath 483/583 Lecture 7. Notes: AMath 483/583 Lecture 7 This lecture: Python debugging demo Compiled langauges Introduction to Fortran 90 syntax Declaring variables, loops, booleans Reading: class notes: Python debugging class notes:

More information

COSC345 Software Engineering. Make

COSC345 Software Engineering. Make COSC345 Software Engineering Make The build process Make When to use make How to use make Suffix rules makedepend Outline Warning: Make is different everywhere you go! Build Process The build process can

More information

AMath 483/583 Lecture 7

AMath 483/583 Lecture 7 AMath 483/583 Lecture 7 This lecture: Python debugging demo Compiled langauges Introduction to Fortran 90 syntax Declaring variables, loops, booleans Reading: class notes: Python debugging class notes:

More information

The Unix Shell. Job Control

The Unix Shell. Job Control The Unix Shell Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. shell shell $

More information

CS11 Intro C++ Spring 2018 Lecture 4

CS11 Intro C++ Spring 2018 Lecture 4 CS11 Intro C++ Spring 2018 Lecture 4 Build Automation When a program grows beyond a certain size, compiling gets annoying g++ -std=c++14 -Wall units.cpp testbase.cpp \ hw3testunits.cpp -o hw3testunits

More information

A programming language should not include everything anyone might ever want

A programming language should not include everything anyone might ever want Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. A programming language should

More information

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #17. Loops: Break Statement

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #17. Loops: Break Statement Introduction to Programming in C Department of Computer Science and Engineering Lecture No. #17 Loops: Break Statement (Refer Slide Time: 00:07) In this session we will see one more feature that is present

More information

Version Control. Ioannis N. Athanasiadis. with slides from Solution Perspective Media and Software Carpentry

Version Control. Ioannis N. Athanasiadis. with slides from Solution Perspective Media and Software Carpentry Ioannis N. Athanasiadis with slides from Solution Perspective Media and Software Carpentry http://springuniversity.bc3research.org/ 1 What is it A method for centrally storing files Keeping a record of

More information

A function is a way to turn a bunch of related statements into a single "chunk"

A function is a way to turn a bunch of related statements into a single chunk Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. A function is a way to turn a

More information

While Loops CHAPTER 5: LOOP STRUCTURES. While Loops. While Loops 2/7/2013

While Loops CHAPTER 5: LOOP STRUCTURES. While Loops. While Loops 2/7/2013 While Loops A loop performs an iteration or repetition A while loop is the simplest form of a loop Occurs when a condition is true CHAPTER 5: LOOP STRUCTURES Introduction to Computer Science Using Ruby

More information

First, let's make sure we have all of the starter code downloaded. MAC (Go to the second part of the tutorial if you are using windows)

First, let's make sure we have all of the starter code downloaded. MAC (Go to the second part of the tutorial if you are using windows) CSE 167 HW 0 - Due Thur. Jan 18th at 11:59 p.m. This homework will help you set up OpenGL on your computer. First, let's make sure we have all of the starter code downloaded. https://github.com/ht413/cse167startercode

More information

MySQL: Access Via PHP

MySQL: Access Via PHP MySQL: Access Via PHP CISC 282 November 15, 2017 phpmyadmin: Login http://cisc282.caslab. queensu.ca/phpmyadmin/ Use your NetID and CISC 282 password to log in 2 phpmyadmin: Select DB Clicking on this

More information

DATEXEL LLC. Introducing DEV 9K Version2 with converting four Modbus Flow meters to 4-20 ma. Start-up.

DATEXEL LLC. Introducing DEV 9K Version2 with converting four Modbus Flow meters to 4-20 ma. Start-up. DATEXEL LLC Introducing DEV 9K Version2 with converting four Modbus Flow meters to 4-20 ma. This application is converting four RS485 Modbus RTU Flow meters to four 4-20mA outputs using a Modbus RTU Master

More information

Conditional Compilation

Conditional Compilation Conditional Compilation printf() statements cab be inserted code for the purpose of displaying debug information during program testing. Once the program is debugged and accepted as "working'', it is desirable

More information

This tutorial will teach you about operators. Operators are symbols that are used to represent an actions used in programming.

This tutorial will teach you about operators. Operators are symbols that are used to represent an actions used in programming. OPERATORS This tutorial will teach you about operators. s are symbols that are used to represent an actions used in programming. Here is the link to the tutorial on TouchDevelop: http://tdev.ly/qwausldq

More information

CMPT 373 Software Development Methods. Building Software. Nick Sumner Some materials from Shlomi Fish & Kitware

CMPT 373 Software Development Methods. Building Software. Nick Sumner Some materials from Shlomi Fish & Kitware CMPT 373 Software Development Methods Building Software Nick Sumner wsumner@sfu.ca Some materials from Shlomi Fish & Kitware What does it mean to build software? How many of you know how to build software?

More information

So far, Wednesday, February 03, :47 PM. So far,

So far, Wednesday, February 03, :47 PM. So far, Binding_and_Refinement Page 1 So far, 3:47 PM So far, We've created a simple persistence project with cloud references. There were lots of relationships between entities that must be fulfilled. How do

More information

Makefile Brief Reference

Makefile Brief Reference Makefile Brief Reference COMP 229, 346, 444, 5201 Revision 1.1 Date: July 31, 2003 1 Contents Intro Format Examples 2 Intro Makefiles in conjunction with the make utility (man make) provide a very convenient

More information

Copyright

Copyright This video looks at Claim Based/Identity Based systems using Active Directory Federation Services as an example. An example of a claim based system is where the user logs into a system like a web page

More information

PatternFinder is a tool that finds non-overlapping or overlapping patterns in any input sequence.

PatternFinder is a tool that finds non-overlapping or overlapping patterns in any input sequence. PatternFinder is a tool that finds non-overlapping or overlapping patterns in any input sequence. Pattern Finder Input Parameters: USAGE: PatternDetective.exe [ -help /? -f [filename] -min -max [minimum

More information

28 The TTCN to C Compiler

28 The TTCN to C Compiler Chapter 28 The TTCN to C Compiler (on UNIX) This chapter describes what the TTCN to C compiler is used for, how to run it and the structure of the generated code. When the TTCN to C compiler has translated

More information

Syntax Warnings Language-Integrated Nitpicking

Syntax Warnings Language-Integrated Nitpicking Syntax Warnings Language-Integrated Nitpicking 1 foo.rkt #lang racket/base (require "util.rkt" racket/match (for-syntax "macro-util.rkt") "macros.rkt" racket/vector (for-syntax "macro-util-more.rkt") (for-template

More information

Adapted from Code.org curriculum

Adapted from Code.org curriculum Adapted from Code.org curriculum Objectives Use the return command to design functions. Identify instances when a function with a return value can be used to contain frequently used computations within

More information

CS11 Advanced C++ Fall Lecture 4

CS11 Advanced C++ Fall Lecture 4 CS11 Advanced C++ Fall 2006-2007 Lecture 4 Today s Topics Using make to automate build tasks Using doxygen to generate API docs Build-Automation Standard development cycle: Write more code Compile Test

More information

Porting CESM Jim Edwards CESM Software Engineering Group

Porting CESM Jim Edwards CESM Software Engineering Group Porting CESM 1.2.2 Jim Edwards CESM Software Engineering Group Note: Porting CESM can be a difficult task which may require knowledge of the UNIX operating system, building code with gmake and cmake, scripting

More information

Programming Assignment IV

Programming Assignment IV Programming Assignment IV 1 Introduction In this assignment, you will implement the static semantics of Cool. You will use the abstract syntax trees (AST) built by the parser to check that a program conforms

More information

Programming Assignment IV Due Monday, November 8 (with an automatic extension until Friday, November 12, noon)

Programming Assignment IV Due Monday, November 8 (with an automatic extension until Friday, November 12, noon) Programming Assignment IV Due Monday, November 8 (with an automatic extension until Friday, November 12, noon) Thus spake the master programmer: A well-written program is its own heaven; a poorly written

More information

===Lab Info=== * 90 points. * Due 11:59pm on Sunday, 9/20/2015 for Monday and Wednesday lab. ==Assignment==

===Lab Info=== * 90 points. * Due 11:59pm on Sunday, 9/20/2015 for Monday and Wednesday lab. ==Assignment== ===Lab Info=== * 90 points * Due 11:59pm on Sunday, 9/20/2015 for Monday and Wednesday lab ==Assignment== In this assignment, you will work on closed hashing with open addressing. You are to read in the

More information

National Aeronautics and Space and Administration Space Administration. CFE CMake Build System

National Aeronautics and Space and Administration Space Administration. CFE CMake Build System National Aeronautics and Space and Administration Space Administration CFE CMake Build System 1 1 Simplify integrating apps together CFS official Recycled from other projects Custom LC... SC HK A C B Z

More information

Makefile Tutorial. Eric S. Missimer. December 6, 2013

Makefile Tutorial. Eric S. Missimer. December 6, 2013 Makefile Tutorial Eric S. Missimer December 6, 2013 1 Basic Elements of a Makefile 1.1 Explicit Rules A the major part of a Makefile are the explicit rules (a.k.a. recipes) that make certain files. Below

More information

MPLAB X IDE PROJECTS Microchip Technology Incorporated. All Rights Reserved DEV Slide 68

MPLAB X IDE PROJECTS Microchip Technology Incorporated. All Rights Reserved DEV Slide 68 MPLAB X IDE PROJECTS 2013 Microchip Technology Incorporated. All Rights Reserved. 17002 DEV Slide 68 MPLAB X IDE Projects What is a project? Definition A Project is defined by a collection of files within

More information

Operating Systems, Assignment 2 Threads and Synchronization

Operating Systems, Assignment 2 Threads and Synchronization Operating Systems, Assignment 2 Threads and Synchronization Responsible TA's: Zohar and Matan Assignment overview The assignment consists of the following parts: 1) Kernel-level threads package 2) Synchronization

More information

Network Defenses 21 JANUARY KAMI VANIEA 1

Network Defenses 21 JANUARY KAMI VANIEA 1 Network Defenses KAMI VANIEA 21 JANUARY KAMI VANIEA 1 First, the news The Great Cannon of China https://citizenlab.org/2015/04/chinas-great-cannon/ KAMI VANIEA 2 Today Open System Interconnect (OSI) model

More information

Getting to places from my house...

Getting to places from my house... Reductions, Self-Similarity, and Recursion Relations between problems Notes for CSC 100 - The Beauty and Joy of Computing The University of North Carolina at Greensboro Getting to places from my house...

More information

Petuum Bösen Reference Manual

Petuum Bösen Reference Manual Petuum Bösen Reference Manual Jinliang Wei Carnegie Mellon University, School of Computer Science Revision 0.2 Last Update: July 10, 2015 Bösen Essentials A Brief Introduction 1 What is Bösen Bösen is

More information

Network Defenses KAMI VANIEA 1

Network Defenses KAMI VANIEA 1 Network Defenses KAMI VANIEA 26 SEPTEMBER 2017 KAMI VANIEA 1 First the news http://arstech nica.com/secu rity/2015/04/ meet-greatcannon-theman-in-themiddleweapon-chinaused-ongithub/ 2 First the news http://arstechni

More information

CMake refactoring. P. Hristov 19/03/2014

CMake refactoring. P. Hristov 19/03/2014 CMake refactoring P. Hristov 19/03/2014 History I Recursive makefiles (F.Carminati): 1999-2001 Problems in dependencies Slow "Recursive Makefiles Considered Harmful" => flat makefiles similar to what Root

More information

Notepad++ The COMPSCI 101 Text Editor for Windows. What is a text editor? Install Python 3. Installing Notepad++

Notepad++  The COMPSCI 101 Text Editor for Windows. What is a text editor? Install Python 3. Installing Notepad++ Notepad++ The COMPSCI 101 Text Editor for Windows The text editor that we will be using in the Computer Science labs for creating our Python programs is called Notepad++ and is freely available for the

More information

Chapter 11 Introduction to Programming in C

Chapter 11 Introduction to Programming in C C: A High-Level Language Chapter 11 Introduction to Programming in C Original slides from Gregory Byrd, North Carolina State University Modified slides by Chris Wilcox, Colorado State University! Gives

More information

Rule 1-3: Use white space to break a function into paragraphs. Rule 1-5: Avoid very long statements. Use multiple shorter statements instead.

Rule 1-3: Use white space to break a function into paragraphs. Rule 1-5: Avoid very long statements. Use multiple shorter statements instead. Chapter 9: Rules Chapter 1:Style and Program Organization Rule 1-1: Organize programs for readability, just as you would expect an author to organize a book. Rule 1-2: Divide each module up into a public

More information

Chapter 11 Introduction to Programming in C

Chapter 11 Introduction to Programming in C Chapter 11 Introduction to Programming in C Original slides from Gregory Byrd, North Carolina State University Modified slides by Chris Wilcox, Colorado State University C: A High-Level Language! Gives

More information

This paper was presented at DVCon-Europe in November It received the conference Best Paper award based on audience voting.

This paper was presented at DVCon-Europe in November It received the conference Best Paper award based on audience voting. This paper was presented at DVCon-Europe in November 2015. It received the conference Best Paper award based on audience voting. It is a very slightly updated version of a paper that was presented at SNUG

More information

CS 326 Operating Systems C Programming. Greg Benson Department of Computer Science University of San Francisco

CS 326 Operating Systems C Programming. Greg Benson Department of Computer Science University of San Francisco CS 326 Operating Systems C Programming Greg Benson Department of Computer Science University of San Francisco Why C? Fast (good optimizing compilers) Not too high-level (Java, Python, Lisp) Not too low-level

More information

Lab 5 : WordAnalyzer class

Lab 5 : WordAnalyzer class Lab 5 : WordAnalyzer class Introduction READ THE INSTRUCTIONS FIRST! The WordAnalyzer class was written to perform a few different analyses of words: - identify the first repeated (adjacent) character

More information

LAB #3: ADDERS and COMPARATORS using 3 types of Verilog Modeling

LAB #3: ADDERS and COMPARATORS using 3 types of Verilog Modeling LAB #3: ADDERS and COMPARATORS using 3 types of Verilog Modeling LAB OBJECTIVES 1. Practice designing more combinational logic circuits 2. More experience with equations and the use of K-maps and Boolean

More information

Makefiles SE 2XA3. Term I, 2018/19

Makefiles SE 2XA3. Term I, 2018/19 Makefiles SE 2XA3 Term I, 2018/19 Outline Example Calling make Syntax How it works Macros Suffix rules Command line options Example Assume we have files main.c, test.c, and lo.asm Consider the makefile

More information

Network Defenses 21 JANUARY KAMI VANIEA 1

Network Defenses 21 JANUARY KAMI VANIEA 1 Network Defenses KAMI VANIEA 21 JANUARY KAMI VANIEA 1 Similar statements are found in most content hosting website privacy policies. What is it about how the internet works that makes this statement necessary

More information

ANITA S SUPER AWESOME RECITATION SLIDES

ANITA S SUPER AWESOME RECITATION SLIDES ANITA S SUPER AWESOME RECITATION SLIDES 15/18-213: Introduction to Computer Systems Dynamic Memory Allocation Anita Zhang, Section M UPDATES Cache Lab style points released Don t fret too much Shell Lab

More information

Version Control. Software Carpentry Github s Hello World Git For Ages 4 And Up You need source code control now

Version Control. Software Carpentry Github s Hello World Git For Ages 4 And Up You need source code control now A version control system (VCS) is a tool or system for keeping track of changes in files. A primitive form of VCS would be making a copy of a file every time you want to make a new version of the file.

More information

A Fast Review of C Essentials Part II

A Fast Review of C Essentials Part II A Fast Review of C Essentials Part II Structural Programming by Z. Cihan TAYSI Outline Macro processing Macro substitution Removing a macro definition Macros vs. functions Built-in macros Conditional compilation

More information

independent compilation and Make

independent compilation and Make independent compilation and Make Geoffrey Brown David S. Wise Chris Haynes Bryce Himebaugh Computer Structures Fall 2013 Independent Compilation As a matter of style, source code files should rarely be

More information

Lec 3. Compilers, Debugging, Hello World, and Variables

Lec 3. Compilers, Debugging, Hello World, and Variables Lec 3 Compilers, Debugging, Hello World, and Variables Announcements First book reading due tonight at midnight Complete 80% of all activities to get 100% HW1 due Saturday at midnight Lab hours posted

More information

Makefiles are a simple way to organize code compilation. Using a makefile it is possible to compile several source files to produce an executable;

Makefiles are a simple way to organize code compilation. Using a makefile it is possible to compile several source files to produce an executable; Makefile Makefiles are a simple way to organize code compilation. Using a makefile it is possible to compile several source files to produce an executable; Source (.cc) and header (.h) files can be placed

More information

COMPILER CONSTRUCTION Seminar 02 TDDB44

COMPILER CONSTRUCTION Seminar 02 TDDB44 COMPILER CONSTRUCTION Seminar 02 TDDB44 Martin Sjölund (martin.sjolund@liu.se) Adrian Horga (adrian.horga@liu.se) Department of Computer and Information Science Linköping University LABS Lab 3 LR parsing

More information

Configuration Control Management

Configuration Control Management TYX Corporation Productivity Enhancement Systems Reference TYX_0051_11 Revision 1.0 Document ConfControl.doc Date August 08, 2004 Configuration Control Management 1 Project configuration:... 2 1.1 Introduction:...

More information

15-323/ Spring 2019 Project 4. Real-Time Audio Processing Due: April 2 Last updated: 6 March 2019

15-323/ Spring 2019 Project 4. Real-Time Audio Processing Due: April 2 Last updated: 6 March 2019 15-323/15-623 Spring 2019 Project 4. Real-Time Audio Processing Due: April 2 Last updated: 6 March 2019 1 Overview In this project, you will create a program that performs real-time audio generation. There

More information

CAAM 420 Daily Note. Scriber: Qijia Jiang. Date: Oct.16. Project 3 Due Wed 23.Oct. Two parts: debug code and library exercise.

CAAM 420 Daily Note. Scriber: Qijia Jiang. Date: Oct.16. Project 3 Due Wed 23.Oct. Two parts: debug code and library exercise. CAAM 420 Daily Note Scriber: Qijia Jiang Date: Oct.16 1 Announcement Project 3 Due Wed 23.Oct. Two parts: debug code and library exercise. 2 Make Convention Make syntax for library directories and library

More information

Refactoring Without Ropes

Refactoring Without Ropes Refactoring Without Ropes Roger Orr OR/2 Limited The term 'refactoring' has become popular in recent years; but how do we do it safely in actual practice? Refactoring... Improving the design of existing

More information

OPERATING SYSTEMS ASSIGNMENT 4 FILE SYSTEM

OPERATING SYSTEMS ASSIGNMENT 4 FILE SYSTEM OPERATING SYSTEMS ASSIGNMENT 4 FILE SYSTEM Introduction The File system is an integral part of every operating system. The use of files enables the user to save persistent data. Files can also be used

More information

Software design and Implementation 1/6. Software Design and Implementation. Sample Final Exam

Software design and Implementation 1/6. Software Design and Implementation. Sample Final Exam Software design and Implementation 1/6 Software Design and Implementation Sample Final Exam 18.11.2004 Conditions: Closed book Duration: 120 min Name: Student ID: 1. /20 2. /20 3. /20 4. /20 5. /20 Total

More information

CSM CompSci Field Session 2012: 'ddable' Live USB Image Generation for Oracle Solaris Final Report

CSM CompSci Field Session 2012: 'ddable' Live USB Image Generation for Oracle Solaris Final Report CSM CompSci Field Session 2012: 'ddable' Live USB Image Generation for Oracle Solaris Final Report Authors: Andrew Grossnickle Earl Colin Pilloud Zachary Harrison Stigall June 19, 2012 1 Introduction 1.1

More information

System Guide

System Guide http://www.bambooinvoice.org System Guide BambooInvoice is free open-source invoicing software intended for small businesses and independent contractors. Our number one priorities are ease of use, user-interface,

More information

Software Development With Emacs: The Edit-Compile-Debug Cycle

Software Development With Emacs: The Edit-Compile-Debug Cycle Software Development With Emacs: The Edit-Compile-Debug Cycle Luis Fernandes Department of Electrical and Computer Engineering Ryerson Polytechnic University August 8, 2017 The Emacs editor permits the

More information

ENGR 3410: MP #1 MIPS 32-bit Register File

ENGR 3410: MP #1 MIPS 32-bit Register File ENGR 3410: MP #1 MIPS 32-bit Register File Due: October 12, 2007, 5pm 1 Introduction The purpose of this machine problem is to create the first large component of our MIPS-style microprocessor the register

More information

Matlab notes Matlab is a matrix-based, high-performance language for technical computing It integrates computation, visualisation and programming usin

Matlab notes Matlab is a matrix-based, high-performance language for technical computing It integrates computation, visualisation and programming usin Matlab notes Matlab is a matrix-based, high-performance language for technical computing It integrates computation, visualisation and programming using familiar mathematical notation The name Matlab stands

More information

lcc-win32 Reference Manual

lcc-win32 Reference Manual lcc-win32 Reference Manual Version 2.2 January 2014 Written by Mark Holthouse Westwood High School mholthouse@westwood.k12.ma.us Contents Preface... 3 Using lcc-win32 for the First Time... 3 Starting a

More information

CSci 4061 Introduction to Operating Systems. Programs in C/Unix

CSci 4061 Introduction to Operating Systems. Programs in C/Unix CSci 4061 Introduction to Operating Systems Programs in C/Unix Today Basic C programming Follow on to recitation Structure of a C program A C program consists of a collection of C functions, structs, arrays,

More information

Lab 3 : Sort program

Lab 3 : Sort program Lab : Sort program Introduction Your pointy haired Dilbert manager decided to write a Sort program which you have now inherited. The Sort program intends to emulate the main functionality of the GNU sort

More information

TUTORIAL: Quickstart with freediameter

TUTORIAL: Quickstart with freediameter 38 TUTORIAL: Quickstart with freediameter How to compile and run freediameter in a simple testbed. Tutorial: Creating a fd testbed 39 Goal : create a simple testbed Two nodes: one client, one server Run

More information

Chapter 11 Introduction to Programming in C

Chapter 11 Introduction to Programming in C C: A High-Level Language Chapter 11 Introduction to Programming in C Original slides from Gregory Byrd, North Carolina State University Modified slides by Chris Wilcox, Colorado State University Gives

More information

Final Programming Project

Final Programming Project Due Thursday, Dec. 7, at 5:00 pm Logistics This assignment should be completed in groups of 3. This is not optional -- you are not allowed to complete it on your own, or in groups of any other size. I

More information

Lab 1: Introduction to Java

Lab 1: Introduction to Java Lab 1: Introduction to Java Welcome to the first CS15 lab! In the reading, we went over objects, methods, parameters and how to put all of these things together into Java classes. It's perfectly okay if

More information

Multimedia Programming

Multimedia Programming Copyright Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. Data is 1's and 0's Data is 1's

More information

PATH FINDING AND GRAPH TRAVERSAL

PATH FINDING AND GRAPH TRAVERSAL PATH FINDING AND GRAPH TRAVERSAL PATH FINDING AND GRAPH TRAVERSAL Path finding refers to determining the shortest path between two vertices in a graph. We discussed the Floyd Warshall algorithm previously,

More information

Chapter 21a Other Library Issues

Chapter 21a Other Library Issues Chapter 21a Other Library Issues Nick Maclaren http://www.ucs.cam.ac.uk/docs/course-notes/un ix-courses/cplusplus This was written by me, not Bjarne Stroustrup Function Objects These are not the only way

More information

CS 429H, Spring 2012 Optimizing the Performance of a Pipelined Processor Assigned: March 26, Due: April 19, 11:59PM

CS 429H, Spring 2012 Optimizing the Performance of a Pipelined Processor Assigned: March 26, Due: April 19, 11:59PM CS 429H, Spring 2012 Optimizing the Performance of a Pipelined Processor Assigned: March 26, Due: April 19, 11:59PM 1 Introduction In this lab, you will learn about the design and implementation of a pipelined

More information

Compiling with Multiple Files The Importance of Debugging CS 16: Solving Problems with Computers I Lecture #7

Compiling with Multiple Files The Importance of Debugging CS 16: Solving Problems with Computers I Lecture #7 Compiling with Multiple Files The Importance of Debugging CS 16: Solving Problems with Computers I Lecture #7 Ziad Matni Dept. of Computer Science, UCSB Programming in Multiple Files The Magic of Makefiles!

More information

Getting Started with GCHP v11-02c

Getting Started with GCHP v11-02c Getting Started with GCHP v11-02c Lizzie Lundgren GEOS-Chem Support Team geos-chem-support@as.harvard.edu September 2017 Overview 1) What is GCHP and why use it? 2) Common Misconceptions 3) Useful Tips

More information

Reliable programming

Reliable programming Reliable programming How to write programs that work Think about reliability during design and implementation Test systematically When things break, fix them correctly Make sure everything stays fixed

More information

SCIRun: Module Development Basics

SCIRun: Module Development Basics SCIRun: Module Development Basics CIBC/NEU Workshop 2012 http://bit.ly/scirundevworkshop Goals Take you from "Hello World" in SCIRun to being able to develop an interesting module. Learn some software

More information

In either case, remember to delete each array that you allocate.

In either case, remember to delete each array that you allocate. CS 103 Path-so-logical 1 Introduction In this programming assignment you will write a program to read a given maze (provided as an ASCII text file) and find the shortest path from start to finish. 2 Techniques

More information

Haskell Program Coverage Toolkit

Haskell Program Coverage Toolkit Haskell Program Coverage Toolkit Andy Gill Colin Runciman Why Study Code Coverage? If your program contains reachable code that has not been executed by your tests, then your program is insufficiently

More information

Package Managers. What are they and why we use them

Package Managers. What are they and why we use them Package Managers What are they and why we use them Thoughts of an admin Installing software is painful Installing a lot of software is extremely painful Installing a lot of software on a lot of machines

More information

Make: a build automation tool

Make: a build automation tool Make: a build automation tool What is the problem? The lab examples repository for the CS 253 course has 228 files in 54 folders. To build them all would requires us to navigate to 54 folders and compile

More information

Lecture 4: Build Systems, Tar, Character Strings

Lecture 4: Build Systems, Tar, Character Strings CIS 330:! / / / / (_) / / / / _/_/ / / / / / \/ / /_/ / `/ \/ / / / _/_// / / / / /_ / /_/ / / / / /> < / /_/ / / / / /_/ / / / /_/ / / / / / \ /_/ /_/_/_/ _ \,_/_/ /_/\,_/ \ /_/ \ //_/ /_/ Lecture 4:

More information