How Not to Write a Block

Size: px
Start display at page:

Download "How Not to Write a Block"

Transcription

1 How Not to Write a Block Tom Rondeau (tom@trondeau.com)

2 Introduction Review concepts of working through building a block. When errors happen, what to do about it. Explore some common problems. Tom Rondeau (tom@trondeau.com) Writing Blocks 2 / 44

3 Define a Task for our Block Looking for an event in data. Setup: Receive a digital signal (some form of QAM). We can demod it into a constellation in GNU Radio now. We need a trigger off a specific event when that even starts. We need to write a new block to handle this: What s the size of the event in samples? Look over the event size and determine if it s occurred. Emit a tag when it has on the item on which it began. Scale the imaginary part of the stream by 2. y = x r + j2x i Tom Rondeau (tom@trondeau.com) Writing Blocks 3 / 44

4 System Setup: All GNU Radio Blocks. Tom Rondeau Writing Blocks 4 / 44

5 Output doesn t look right... I should be seeing a real constellation Tom Rondeau (tom@trondeau.com) Writing Blocks 5 / 44

6 Let s add some instrumentation Time sinks added before and after the last block. Tom Rondeau (tom@trondeau.com) Writing Blocks 6 / 44

7 Input looks good, output doesn t So it s the pfb_clock_sync block that s the problem. Tom Rondeau (tom@trondeau.com) Writing Blocks 7 / 44

8 What to do about that block? Let s look at the manual page and hope it s complete: cloc Lots of info here, including a sentence: taps: One of the most important parameters for this block... And continuing to read, we find we have to oversample the filter taps. Tom Rondeau (tom@trondeau.com) Writing Blocks 8 / 44

9 I don t understand what the description says In this case, there are a lot of examples that use this block: /usr/share/gnuradio/examples/digital/demod/pam_timing.grc How did I know this? grep to look in examples or source for this block. Tom Rondeau (tom@trondeau.com) Writing Blocks 9 / 44

10 Setting the right taps is much better Received constellation is easily identifiable now. Tom Rondeau Writing Blocks 10 / 44

11 Now to build a new block Do I know what I m doing? Maybe better check for some help. gnuradio.org has a set of tutorials. See How to write an out-of-tree (OOT) module Teaches us how to use gr_modtool and configure Show gr_modtool newmod Show gr_modtool add Tom Rondeau (tom@trondeau.com) Writing Blocks 11 / 44

12 First, create the module Unless you already have a module that this will fit in to. use gr_modtool newmod Tom Rondeau (tom@trondeau.com) Writing Blocks 12 / 44

13 Add the new block to it For help, gr_modtool help add use gr_modtool add Tom Rondeau Writing Blocks 13 / 44

14 Make sure it s working at this point No use spending time until we know we can build at all Do the minor amount to setup the class by filling in all the <+ ~ +> stuff Tom Rondeau (tom@trondeau.com) Writing Blocks 14 / 44

15 Build the project Run cmake and compile $ mkdir build $ cd build $ cmake -DCMAKE_INSTALL_PREFIX=<some dir>../ $ make $ make install Tom Rondeau (tom@trondeau.com) Writing Blocks 15 / 44

16 A word of advice... Tom Rondeau Writing Blocks 16 / 44

17 Let s understand the point of the block Derotate the input by the known frequency. See if a particular vector of samples exists on the input stream. Measure known vector sig against the output stream out Tom Rondeau (tom@trondeau.com) Writing Blocks 17 / 44

18 Let s do that signal processing Say we have defined a function that does the detection. call it do_some_signal_processing Call in the work function. Compile! Error? WAT? Tom Rondeau (tom@trondeau.com) Writing Blocks 18 / 44

19 Luke, you ve switched off your compiler output! What s wrong? Probably not useful to rely on the Force to find our bugs. Tom Rondeau (tom@trondeau.com) Writing Blocks 19 / 44

20 Compiler output Output can be cryptic and hard to parse. Read through it to understand what it s saying. Telling us we called the function with no parameters but it takes parameters. Tom Rondeau (tom@trondeau.com) Writing Blocks 20 / 44

21 Fix the error The function takes two parameters, the length of the detection signal and the input to test against. Recompile Tom Rondeau Writing Blocks 21 / 44

22 Negative. Negative. It didn t go in. It just impacted the surface. Tom Rondeau (tom@trondeau.com) Writing Blocks 22 / 44

23 What s wrong this time? can t convert from void* to gr_complex? Ohhh! That s what our cast was about! Use in instead of input_items. Tom Rondeau (tom@trondeau.com) Writing Blocks 23 / 44

24 You re all clear kid. Now let s blow this thing and go home. Tom Rondeau (tom@trondeau.com) Writing Blocks 24 / 44

25 Loop over all items in the derotated output Loop from 0 to noutput_items-d_len so we don t overrun the buffer Tom Rondeau (tom@trondeau.com) Writing Blocks 25 / 44

26 That compiles. Now to signal the detection with a tag. do_some_signal_processing returns a value of 1 if the event occurred or 0 if not. When a 1 occurs, we d like to send a tag. Don t be too hasty. That is my motto. Treebeard Let s see if this happens before we try to work with the tag system. Print debug info to stdout Use the GNU Radio Logger: Tom Rondeau (tom@trondeau.com) Writing Blocks 26 / 44

27 Debugging There are many right ways to debug. Maybe some faster than others. Do what works for you, but have some trick you use. Here, we use the logger to emit a DEBUG message when the detector returns 1. Tom Rondeau (tom@trondeau.com) Writing Blocks 27 / 44

28 Runs and prints the output info every few seconds. Tom Rondeau Writing Blocks 28 / 44

29 Now build the tag and send it Learn about the tag stream system: Create a gr::tag_t object use add_item_tag(0, tag); Tom Rondeau (tom@trondeau.com) Writing Blocks 29 / 44

30 And add our adjustment of the data stream Rescaling the imaginary part by 2. Tom Rondeau Writing Blocks 30 / 44

31 Ready to test. Rework GUI tools to see better. Bottom constellation plot is the input to our detector and runs freely. Top constellation plot is output and is set to trigger off our detected tag. Tom Rondeau Writing Blocks 31 / 44

32 Ready to test. Rework GUI tools to see better. Logger says we are detecting and sending the tag. It s also missing too many detections. The tag trigger is never firing, so the block isn t seeing the tag. Tom Rondeau (tom@trondeau.com) Writing Blocks 32 / 44

33 This could be difficult to debug Tom Rondeau Writing Blocks 33 / 44

34 Debugging tags? Use the Tag Debug block Prints all tags to stdout. Won t help here we still don t see any output. Tom Rondeau (tom@trondeau.com) Writing Blocks 34 / 44

35 Misunderstood the tag offset value Ah, the absolute offset of the item, not just the current offset, i, in the work function. Tom Rondeau Writing Blocks 35 / 44

36 What about that other problem? Signal of interest happening periodically, but the detection is worse than expected. Wait... why am I iterating over one value and returning another? Don t we want to process all items? Tom Rondeau (tom@trondeau.com) Writing Blocks 36 / 44

37 But we can t process beyond the input stream! We re only looking at noutput_items-d_len items. But that doesn t process all of our samples. And what if noutput_items < d_len? We can actually tell the runtime to give us those extra samples. Tom Rondeau (tom@trondeau.com) Writing Blocks 37 / 44

38 Setup the block to work with the scheduler We want to scan over a length of symbols. Use a GNU Radio scheduler feature called set_history. Yeah, awesome, how was I supposed to know that? Fair question. The Scheduler isn t well represented in the manual. Makes sure we look over the entire length of our detection requirement. call set_history(len) in constructor. Compile Tom Rondeau (tom@trondeau.com) Writing Blocks 38 / 44

39 Final, working block Tom Rondeau Writing Blocks 39 / 44

40 Working! Wrangling cats! Tom Rondeau Writing Blocks 40 / 44

41 Other things to think about Segmentation faults and core dumps: Tutorial page on gnuradio.org: TutorialsDebugging Operating system tools to get to know: grep or git grep git cmake Shell commands and environmental variables Tom Rondeau Writing Blocks 41 / 44

42 Still don t know? Google Stack Overflow can solve a lot of questions Find us on the mailing list gnuradio.org/redmine/projects/gnuradio/wiki/mailinglists Find us on IRC (freenode server) #gnuradio Tom Rondeau (tom@trondeau.com) Writing Blocks 42 / 44

43 Challenge problem: Understand this block and its interactions with the scheduler: Tom Rondeau Writing Blocks 43 / 44

44 Challenge problem: Understand this block and its interactions with the scheduler: gr::block consume_each enable_update_rate set_relative_rate check_topology forecast get_tags_in_range Optional outputs Tom Rondeau Writing Blocks 44 / 44

New GNU Radio Tools: Performance Counters, Logging, Thread Controls, QTGUI

New GNU Radio Tools: Performance Counters, Logging, Thread Controls, QTGUI New GNU Radio Tools: Performance Counters, Logging, Thread Controls, QTGUI Tom Rondeau trondeau.com 2013-10-03 Tom Rondeau (trondeau.com) New GNU Radio Tools: Performance Counters, Logging, Thread 2013-10-03

More information

CS354 gdb Tutorial Written by Chris Feilbach

CS354 gdb Tutorial Written by Chris Feilbach CS354 gdb Tutorial Written by Chris Feilbach Purpose This tutorial aims to show you the basics of using gdb to debug C programs. gdb is the GNU debugger, and is provided on systems that

More information

GDB Tutorial. A Walkthrough with Examples. CMSC Spring Last modified March 22, GDB Tutorial

GDB Tutorial. A Walkthrough with Examples. CMSC Spring Last modified March 22, GDB Tutorial A Walkthrough with Examples CMSC 212 - Spring 2009 Last modified March 22, 2009 What is gdb? GNU Debugger A debugger for several languages, including C and C++ It allows you to inspect what the program

More information

Tutorial: GNU Radio Companion

Tutorial: GNU Radio Companion Tutorials» Guided Tutorials» Previous: Introduction Next: Programming GNU Radio in Python Tutorial: GNU Radio Companion Objectives Create flowgraphs using the standard block libraries Learn how to debug

More information

CSE 374 Programming Concepts & Tools. Brandon Myers Winter 2015 Lecture 11 gdb and Debugging (Thanks to Hal Perkins)

CSE 374 Programming Concepts & Tools. Brandon Myers Winter 2015 Lecture 11 gdb and Debugging (Thanks to Hal Perkins) CSE 374 Programming Concepts & Tools Brandon Myers Winter 2015 Lecture 11 gdb and Debugging (Thanks to Hal Perkins) Hacker tool of the week (tags) Problem: I want to find the definition of a function or

More information

Scientific Programming in C IX. Debugging

Scientific Programming in C IX. Debugging Scientific Programming in C IX. Debugging Susi Lehtola 13 November 2012 Debugging Quite often you spend an hour to write a code, and then two hours debugging why it doesn t work properly. Scientific Programming

More information

The name of our class will be Yo. Type that in where it says Class Name. Don t hit the OK button yet.

The name of our class will be Yo. Type that in where it says Class Name. Don t hit the OK button yet. Mr G s Java Jive #2: Yo! Our First Program With this handout you ll write your first program, which we ll call Yo. Programs, Classes, and Objects, Oh My! People regularly refer to Java as a language that

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

Helping Developers Help You. Tom Caputi

Helping Developers Help You. Tom Caputi Helping Developers Help You Tom Caputi tcaputi@datto.com The ZFS Code Base 2 The ZFS on Linux* Code Base: Statistics Source code 641 files 383950 lines of code ZFS Test suite (not including ztest) 1327

More information

5 R1 The one green in the same place so either of these could be green.

5 R1 The one green in the same place so either of these could be green. Page: 1 of 20 1 R1 Now. Maybe what we should do is write out the cases that work. We wrote out one of them really very clearly here. [R1 takes out some papers.] Right? You did the one here um where you

More information

System Security Class Notes 09/23/2013

System Security Class Notes 09/23/2013 System Security Class Notes 09/23/2013 1 Format String Exploits a Format String bugs The printf family consists of functions with variable arguments i printf (char* format, ) ii sprint (char* dest, char*

More information

GRUG 11: Lots of gnuradio work

GRUG 11: Lots of gnuradio work GRUG 11: Lots of gnuradio work Coding guide wiki page, follow along http://gnuradio.org/redmine/projects/gnuradio/wiki/blockscodingguide Work here: git://gnuradio.org/jblum.git UHD complex-int8 samples

More information

Upgrading Your Geant4 Release

Upgrading Your Geant4 Release Upgrading Your Geant4 Release Joseph Perl, SLAC 1 Contents Major versus Minor releases What to look for in the release notes How to upgrade 2 Major versus Minor Releases Geant4 release numbers are of the

More information

Java/RealJ Troubleshooting Guide

Java/RealJ Troubleshooting Guide Java/RealJ Troubleshooting Guide by Bob Clark / Sharon Curtis / Simon Jones, September 2000 Some of these tips you will come across during your practical sessions, however we felt it would be helpful to

More information

Class 1: Homework. Intro to Computer Science CSCI-UA.0101 New York University Courant Institute of Mathematical Sciences Fall 2017

Class 1: Homework. Intro to Computer Science CSCI-UA.0101 New York University Courant Institute of Mathematical Sciences Fall 2017 Intro to Computer Science CSCI-UA.0101 New York University Courant Institute of Mathematical Sciences Fall 2017 1 1. Please obtain a copy of Introduction to Java Programming, 11th (or 10th) Edition, Brief

More information

From 0 to 6 GHz in 30 minutes bootstrap your SDR Experience!

From 0 to 6 GHz in 30 minutes bootstrap your SDR Experience! From 0 to 6 GHz in 30 minutes bootstrap your SDR Experience! Start from scratch today, hack the EM spectrum tomorrow! Marcus Müller FOSDEM 2017 February 4, 2017 Introduction From theory to practice Engineering

More information

Criterion Documentation

Criterion Documentation Criterion Documentation Release 2.3.0 Franklin "Snaipe" Mathieu Dec 07, 2016 Contents 1 Introduction 3 1.1 Philosophy................................................ 3 1.2 Features..................................................

More information

Lecture 14: more class, C++ streams

Lecture 14: more class, C++ streams CIS 330: / / / / (_) / / / / _/_/ / / / / / \/ / /_/ / `/ \/ / / / _/_// / / / / /_ / /_/ / / / / /> < / /_/ / / / / /_/ / / / /_/ / / / / / \ /_/ /_/_/_/ _ \,_/_/ /_/\,_/ \ /_/ \ //_/ /_/ Lecture 14:

More information

The Edit-Compile-Run Cycle. EECS 211 Winter 2017

The Edit-Compile-Run Cycle. EECS 211 Winter 2017 The Edit-Compile-Run Cycle EECS 211 Winter 2017 2 So you ve written a program: #include int main() { std::cout

More information

Unix and C Program Development SEEM

Unix and C Program Development SEEM Unix and C Program Development SEEM 3460 1 Operating Systems A computer system cannot function without an operating system (OS). There are many different operating systems available for PCs, minicomputers,

More information

Intro to x86 Binaries. From ASM to exploit

Intro to x86 Binaries. From ASM to exploit Intro to x86 Binaries From ASM to exploit Intro to x86 Binaries I lied lets do a quick ctf team thing Organization Ideas? Do we need to a real structure right now? Mailing list is OTW How do we get more

More information

The OSP 2 Survival Guide

The OSP 2 Survival Guide The OSP 2 Survival Guide What is OSP 2 Educational platform that simulates Hardware (devices, CPU, memory) Events (interrupts, timer events) Job streams (task/thread life cycle, I/O requests, interprocess

More information

Liquibase Version Control For Your Schema. Nathan Voxland April 3,

Liquibase Version Control For Your Schema. Nathan Voxland April 3, Liquibase Version Control For Your Schema Nathan Voxland April 3, 2014 nathan@liquibase.org @nvoxland Agenda 2 Why Liquibase Standard Usage Tips and Tricks Q&A Why Liquibase? 3 You would never develop

More information

SPRITES Moving Two At the Same Using Game State

SPRITES Moving Two At the Same Using Game State If you recall our collision detection lesson, you ll likely remember that you couldn t move both sprites at the same time unless you hit a movement key for each at exactly the same time. Why was that?

More information

Week 5, continued. This is CS50. Harvard University. Fall Cheng Gong

Week 5, continued. This is CS50. Harvard University. Fall Cheng Gong This is CS50. Harvard University. Fall 2014. Cheng Gong Table of Contents News... 1 Buffer Overflow... 1 Malloc... 6 Linked Lists... 7 Searching... 13 Inserting... 16 Removing... 19 News Good news everyone!

More information

QUIZ. What are 3 differences between C and C++ const variables?

QUIZ. What are 3 differences between C and C++ const variables? QUIZ What are 3 differences between C and C++ const variables? Solution QUIZ Source: http://stackoverflow.com/questions/17349387/scope-of-macros-in-c Solution The C/C++ preprocessor substitutes mechanically,

More information

Debugging (Part 1) The material for this lecture is drawn, in part, from The Practice of Programming (Kernighan & Pike) Chapter 5

Debugging (Part 1) The material for this lecture is drawn, in part, from The Practice of Programming (Kernighan & Pike) Chapter 5 Debugging (Part 1) The material for this lecture is drawn, in part, from The Practice of Programming (Kernighan & Pike) Chapter 5 1 For Your Amusement When debugging, novices insert corrective code; experts

More information

CSE 374 Programming Concepts & Tools

CSE 374 Programming Concepts & Tools CSE 374 Programming Concepts & Tools Hal Perkins Fall 2017 Lecture 11 gdb and Debugging 1 Administrivia HW4 out now, due next Thursday, Oct. 26, 11 pm: C code and libraries. Some tools: gdb (debugger)

More information

Computer Science 50: Introduction to Computer Science I Harvard College Fall Quiz 0 Solutions. Answers other than the below may be possible.

Computer Science 50: Introduction to Computer Science I Harvard College Fall Quiz 0 Solutions. Answers other than the below may be possible. Quiz 0 Solutions Answers other than the below may be possible. Short Answers. 0. :-) 1. 10111111 + 00000001 11000000 2. For efficiency, characters printed to stdout are buffered until a newline is printed

More information

USRP/GNU Radio Tutorial

USRP/GNU Radio Tutorial 2013-06-24 USRP/GNU Radio Tutorial 윤성로 NCSU, syoon4@ncsu.edu http://www4.ncsu.edu/~syoon4/ 1 KRNET 2013 SDR (Software Defined Radio) Framework that implements radio functionalities in software Wireless

More information

C++ for CMEA II. Kjetil Olsen Lye. September 24, 2015

C++ for CMEA II. Kjetil Olsen Lye. September 24, 2015 C++ for CMEA II Kjetil Olsen Lye September 24, 2015 C++ in CMEA II Focus of the course is not C++ However, all programming exercises will be in C++ C++ is very relevant for later studies Loads of use cases

More information

Yup, left blank on purpose. You can use it to draw whatever you want :-)

Yup, left blank on purpose. You can use it to draw whatever you want :-) Yup, left blank on purpose. You can use it to draw whatever you want :-) Chapter 1 The task I have assigned myself is not an easy one; teach C.O.F.F.E.E. Not the beverage of course, but the scripting language

More information

Introduction to Programming

Introduction to Programming CHAPTER 1 Introduction to Programming Begin at the beginning, and go on till you come to the end: then stop. This method of telling a story is as good today as it was when the King of Hearts prescribed

More information

Reviewing gcc, make, gdb, and Linux Editors 1

Reviewing gcc, make, gdb, and Linux Editors 1 Reviewing gcc, make, gdb, and Linux Editors 1 Colin Gordon csgordon@cs.washington.edu University of Washington CSE333 Section 1, 3/31/11 1 Lots of material borrowed from 351/303 slides Colin Gordon (University

More information

9 R1 Get another piece of paper. We re going to have fun keeping track of (inaudible). Um How much time do you have? Are you getting tired?

9 R1 Get another piece of paper. We re going to have fun keeping track of (inaudible). Um How much time do you have? Are you getting tired? Page: 1 of 14 1 R1 And this is tell me what this is? 2 Stephanie x times y plus x times y or hm? 3 R1 What are you thinking? 4 Stephanie I don t know. 5 R1 Tell me what you re thinking. 6 Stephanie Well.

More information

Recall: Address Space Map. 13: Memory Management. Let s be reasonable. Processes Address Space. Send it to disk. Freeing up System Memory

Recall: Address Space Map. 13: Memory Management. Let s be reasonable. Processes Address Space. Send it to disk. Freeing up System Memory Recall: Address Space Map 13: Memory Management Biggest Virtual Address Stack (Space for local variables etc. For each nested procedure call) Sometimes Reserved for OS Stack Pointer Last Modified: 6/21/2004

More information

INTRODUCTION. 2

INTRODUCTION. 2 1 INTRODUCTION It is of no secret that Android is loved by millions of people around the world. Created and developed by Google, it would be most developers dream job. That being said, there are a lot

More information

CISC-124. Casting. // this would fail because we can t assign a double value to an int // variable

CISC-124. Casting. // this would fail because we can t assign a double value to an int // variable CISC-124 20180122 Today we looked at casting, conditionals and loops. Casting Casting is a simple method for converting one type of number to another, when the original type cannot be simply assigned to

More information

Lecture 4 September Required reading materials for this class

Lecture 4 September Required reading materials for this class EECS 261: Computer Security Fall 2007 Lecture 4 September 6 Lecturer: David Wagner Scribe: DK Moon 4.1 Required reading materials for this class Beyond Stack Smashing: Recent Advances in Exploiting Buffer

More information

1 2 http://www.d.umn.edu/~gshute/softeng/object-oriented.html Polymorphism and overloading can lead to confusion if used excessively. However, the capability of using words or names to mean different things

More information

Important From Last Time

Important From Last Time Important From Last Time Embedded C Pros and cons Macros and how to avoid them Intrinsics Interrupt syntax Inline assembly Today Advanced C What C programs mean How to create C programs that mean nothing

More information

CSE 326: Data Structures. Section notes, 4/9/2009

CSE 326: Data Structures. Section notes, 4/9/2009 CSE 326: Data Structures Java Generi ics & JUnit 4 Section notes, 4/9/2009 slides originally by Hal Perkins Type-Safe Containers Idea a class or interface can have a type parameter: public class Bag

More information

Page 1. Today. Important From Last Time. Is the assembly code right? Is the assembly code right? Which compiler is right?

Page 1. Today. Important From Last Time. Is the assembly code right? Is the assembly code right? Which compiler is right? Important From Last Time Today Embedded C Pros and cons Macros and how to avoid them Intrinsics Interrupt syntax Inline assembly Advanced C What C programs mean How to create C programs that mean nothing

More information

6 Stephanie Well. It s six, because there s six towers.

6 Stephanie Well. It s six, because there s six towers. Page: 1 of 10 1 R1 So when we divided by two all this stuff this is the row we ended up with. 2 Stephanie Um hm. 3 R1 Isn t that right? We had a row of six. Alright. Now before doing it see if you can

More information

COMP 250 Winter stacks Feb. 2, 2016

COMP 250 Winter stacks Feb. 2, 2016 Stack ADT You are familiar with stacks in your everyday life. You can have a stack of books on a table. You can have a stack of plates on a shelf. In computer science, a stack is an abstract data type

More information

By Jonathan Leger. AdSense Gold - It s time to start cashing in

By Jonathan Leger.   AdSense Gold - It s time to start cashing in By Jonathan Leger jonathanleger@adsensegold.com http://www.adsensegold.com/ AdSense Gold - It s time to start cashing in AdSense SEO Made Easy Page 2 Why I Created This Ebook And what it will teach you

More information

State of Octave. John W. Eaton. OctConf July John W. Eaton GNU Octave 18 July / 14

State of Octave. John W. Eaton. OctConf July John W. Eaton GNU Octave 18 July / 14 State of Octave John W. Eaton OctConf 2012 18 July 2012 John W. Eaton (jwe@octave.org) GNU Octave 18 July 2012 1 / 14 Overview More developers than ever More activity by more people than ever The state

More information

Outline. Computer programming. Debugging. What is it. Debugging. Hints. Debugging

Outline. Computer programming. Debugging. What is it. Debugging. Hints. Debugging Outline Computer programming Debugging Hints Gathering evidence Common C errors "Education is a progressive discovery of our own ignorance." Will Durant T.U. Cluj-Napoca - Computer Programming - lecture

More information

PART 1: Getting Started

PART 1: Getting Started Programming in C++ / FASTTRACK TUTORIALS Introduction PART 1: Getting Started Welcome to the first article in the C++ FASTTRACK tutorial series! These tutorials are designed to take you from zero to a

More information

Getting Started. Excerpted from Hello World! Computer Programming for Kids and Other Beginners

Getting Started. Excerpted from Hello World! Computer Programming for Kids and Other Beginners Getting Started Excerpted from Hello World! Computer Programming for Kids and Other Beginners EARLY ACCESS EDITION Warren D. Sande and Carter Sande MEAP Release: May 2008 Softbound print: November 2008

More information

QUIZ. Source:

QUIZ. Source: QUIZ Source: http://stackoverflow.com/questions/17349387/scope-of-macros-in-c Ch. 4: Data Abstraction The only way to get massive increases in productivity is to leverage off other people s code. That

More information

Important From Last Time

Important From Last Time Important From Last Time Embedded C Ø Pros and cons Macros and how to avoid them Intrinsics Interrupt syntax Inline assembly Today Advanced C What C programs mean How to create C programs that mean nothing

More information

Software Development. Software Testing: Verification and Validation. Verification and Validation (V&V) Verification. Validation

Software Development. Software Testing: Verification and Validation. Verification and Validation (V&V) Verification. Validation Software Development Software Testing: Verification and Validation Problem domain Customer Specification Problem statement A set of (docs, use cases) Program code Running System 2 Verification and Validation

More information

logistics: ROP assignment

logistics: ROP assignment bug-finding 1 logistics: ROP assignment 2 2013 memory safety landscape 3 2013 memory safety landscape 4 different design points memory safety most extreme disallow out of bounds usually even making out-of-bounds

More information

Graded Assignment 2 Maple plots

Graded Assignment 2 Maple plots Graded Assignment 2 Maple plots The Maple part of the assignment is to plot the graphs corresponding to the following problems. I ll note some syntax here to get you started see tutorials for more. Problem

More information

Hacking Blind BROP. Presented by: Brooke Stinnett. Article written by: Andrea Bittau, Adam Belay, Ali Mashtizadeh, David Mazie`res, Dan Boneh

Hacking Blind BROP. Presented by: Brooke Stinnett. Article written by: Andrea Bittau, Adam Belay, Ali Mashtizadeh, David Mazie`res, Dan Boneh Hacking Blind BROP Presented by: Brooke Stinnett Article written by: Andrea Bittau, Adam Belay, Ali Mashtizadeh, David Mazie`res, Dan Boneh Overview Objectives Introduction to BROP ROP recap BROP key phases

More information

Page 1. Today. Last Time. Is the assembly code right? Is the assembly code right? Which compiler is right? Compiler requirements CPP Volatile

Page 1. Today. Last Time. Is the assembly code right? Is the assembly code right? Which compiler is right? Compiler requirements CPP Volatile Last Time Today Compiler requirements CPP Volatile Advanced C What C programs mean int my_loop (int base) { int index, count = 0; for (index = base; index < (base+10); index++) count++; urn count; my_loop:

More information

Due: 9 February 2017 at 1159pm (2359, Pacific Standard Time)

Due: 9 February 2017 at 1159pm (2359, Pacific Standard Time) CSE 11 Winter 2017 Program Assignment #2 (100 points) START EARLY! Due: 9 February 2017 at 1159pm (2359, Pacific Standard Time) PROGRAM #2: DoubleArray11 READ THE ENTIRE ASSIGNMENT BEFORE STARTING In lecture,

More information

CS 220: Introduction to Parallel Computing. Input/Output. Lecture 7

CS 220: Introduction to Parallel Computing. Input/Output. Lecture 7 CS 220: Introduction to Parallel Computing Input/Output Lecture 7 Input/Output Most useful programs will provide some type of input or output Thus far, we ve prompted the user to enter their input directly

More information

2

2 1 2 3 4 5 All resources: how fast, how many? If all the CPUs are pegged, that s as fast as you can go. CPUs have followed Moore s law, the rest of the system hasn t. Not everything can be made threaded,

More information

Programming Project 4: COOL Code Generation

Programming Project 4: COOL Code Generation CS 331 Compilers Fall 2017 Programming Project 4: COOL Code Generation Prof. Szajda Due Tuesday, December 5, 11:59:59 pm NOTE: There will be no extensions whatsoever given for this project! So, begin it

More information

I/Q Data Guide v.1. Guide for acquiring I/Q data with the Gnu Radio Framework. Flagstaff, AZ March 5, Edited by.

I/Q Data Guide v.1. Guide for acquiring I/Q data with the Gnu Radio Framework. Flagstaff, AZ March 5, Edited by. I/Q Data Guide v.1 Guide for acquiring I/Q data with the Gnu Radio Framework Flagstaff, AZ March 5, 2017 Edited by Michael Finley Northern Arizona University Dynamic and Active Systems Laboratory CONTENTS

More information

Checked and Unchecked Exceptions in Java

Checked and Unchecked Exceptions in Java Checked and Unchecked Exceptions in Java Introduction In this article from my free Java 8 course, I will introduce you to Checked and Unchecked Exceptions in Java. Handling exceptions is the process by

More information

Building a Django Twilio Programmable Chat Application

Building a Django Twilio Programmable Chat Application Building a Django Twilio Programmable Chat Application twilio.com/blog/08/0/python-django-twilio-programmable-chat-application.html March 7, 08 As a developer, I ve always wanted to include chat capabilities

More information

Operating System Principles: Memory Management Swapping, Paging, and Virtual Memory CS 111. Operating Systems Peter Reiher

Operating System Principles: Memory Management Swapping, Paging, and Virtual Memory CS 111. Operating Systems Peter Reiher Operating System Principles: Memory Management Swapping, Paging, and Virtual Memory Operating Systems Peter Reiher Page 1 Outline Swapping Paging Virtual memory Page 2 Swapping What if we don t have enough

More information

Graduate Topics in Biophysical Chemistry CH Assignment 0 (Programming Assignment) Due Monday, March 19

Graduate Topics in Biophysical Chemistry CH Assignment 0 (Programming Assignment) Due Monday, March 19 Introduction and Goals Graduate Topics in Biophysical Chemistry CH 8990 03 Assignment 0 (Programming Assignment) Due Monday, March 19 It is virtually impossible to be a successful scientist today without

More information

Test Driven Development (TDD)

Test Driven Development (TDD) Test Driven Development (TDD) Test Driven Development Introduction Good programmers write code, great programmers write tests Never, in the field of programming, have so many owed so much to so few - Martin

More information

Modern C++ for Computer Vision and Image Processing. Igor Bogoslavskyi and Cyrill Stachniss

Modern C++ for Computer Vision and Image Processing. Igor Bogoslavskyi and Cyrill Stachniss Modern C++ for Computer Vision and Image Processing Igor Bogoslavskyi and Cyrill Stachniss Outline Course introduction Linux introduction C++ syntax Hello World! 2 What you will learn in course How to

More information

Software Compare and Contrast

Software Compare and Contrast Microsoft Software Compare and Contrast Word Easy to navigate. Compatible with all PC computers. Very versatile. There are lots of templates that can be used to create flyers, calendars, resumes, etc.

More information

Pointers and Memory 1

Pointers and Memory 1 Pointers and Memory 1 Pointer values Pointer values are memory addresses Think of them as a kind of integer values The first byte of memory is 0, the next 1, and so on A pointer p can hold the address

More information

DarkRift Server Plugin Tutorial

DarkRift Server Plugin Tutorial DarkRift Server Plugin Tutorial Introduction This tutorial will guide you through the process of writing server plugins. It will introduce you to the server s inner architecture and will give you a good

More information

Memory Management: Virtual Memory and Paging CS 111. Operating Systems Peter Reiher

Memory Management: Virtual Memory and Paging CS 111. Operating Systems Peter Reiher Memory Management: Virtual Memory and Paging Operating Systems Peter Reiher Page 1 Outline Paging Swapping and demand paging Virtual memory Page 2 Paging What is paging? What problem does it solve? How

More information

COMP 410 Lecture 1. Kyle Dewey

COMP 410 Lecture 1. Kyle Dewey COMP 410 Lecture 1 Kyle Dewey About Me I research automated testing techniques and their intersection with CS education My dissertation used logic programming extensively This is my second semester at

More information

COMP Lecture Notes The Compiler

COMP Lecture Notes The Compiler COMP 161 - Lecture Notes - 05 - The Compiler January 20, 2016 In these notes we talk about compiling our multi-file C++ program in order to check syntax errors, run unit-tests, or build the main executable.

More information

Random Testing of Interrupt-Driven Software. John Regehr University of Utah

Random Testing of Interrupt-Driven Software. John Regehr University of Utah Random Testing of Interrupt-Driven Software John Regehr University of Utah Integrated stress testing and debugging Random interrupt testing Source-source transformation Static stack analysis Semantics

More information

15 Sharing Main Memory Segmentation and Paging

15 Sharing Main Memory Segmentation and Paging Operating Systems 58 15 Sharing Main Memory Segmentation and Paging Readings for this topic: Anderson/Dahlin Chapter 8 9; Siberschatz/Galvin Chapter 8 9 Simple uniprogramming with a single segment per

More information

How to decrypt 3ds ROM s: This Guide is STRICTLY for 3DS s that are on firmware s I will go back and make this

How to decrypt 3ds ROM s: This Guide is STRICTLY for 3DS s that are on firmware s I will go back and make this How to decrypt 3ds ROM s: WAIT!!!!! BEFORE WE BEGIN THERE ARE A FEW THINGS!!! This Guide is STRICTLY for 3DS s that are on firmware s 4.1-4.5. I will go back and make this tutorial for users that are on

More information

CS 161 Computer Security

CS 161 Computer Security Popa & Wagner Spring 2016 CS 161 Computer Security Homework 2 Due: Monday, February 22nd, at 11:59pm Instructions. This homework is due Monday, February 22nd, at 11:59pm. It must be submitted electronically

More information

Steps for project success. git status. Milestones. Deliverables. Homework 1 submitted Homework 2 will be posted October 26.

Steps for project success. git status. Milestones. Deliverables. Homework 1 submitted Homework 2 will be posted October 26. git status Steps for project success Homework 1 submitted Homework 2 will be posted October 26 due November 16, 9AM Projects underway project status check-in meetings November 9 System-building project

More information

Assignment 1c: Compiler organization and backend programming

Assignment 1c: Compiler organization and backend programming Assignment 1c: Compiler organization and backend programming Roel Jordans 2016 Organization Welcome to the third and final part of assignment 1. This time we will try to further improve the code generation

More information

2.3 Unix Streaming and Piping

2.3 Unix Streaming and Piping 2.3 Unix Streaming and Piping In addition to streams explicitly opened by applications, the Unix system provides you with 3 special streams: stdin (standard input): This stream is usually connected to

More information

Project Report Number Plate Recognition

Project Report Number Plate Recognition Project Report Number Plate Recognition Ribemont Francois Supervisor: Nigel Whyte April 17, 2012 Contents 1 Introduction............................... 2 2 Description of Submitted Project...................

More information

1 Installation (briefly)

1 Installation (briefly) Jumpstart Linux Bo Waggoner Updated: 2014-09-15 Abstract A basic, rapid tutorial on Linux and its command line for the absolute beginner. Prerequisites: a computer on which to install, a DVD and/or USB

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

Judging the Value of Static Analysis. William Pugh Univ. of Maryland

Judging the Value of Static Analysis. William Pugh Univ. of Maryland Judging the Value of Static Analysis William Pugh Univ. of Maryland Judging static analysis Is static analysis an effective/profitable use of time/ funds/resources? Which static analysis tool or tools

More information

6.828: OS/Language Co-design. Adam Belay

6.828: OS/Language Co-design. Adam Belay 6.828: OS/Language Co-design Adam Belay Singularity An experimental research OS at Microsoft in the early 2000s Many people and papers, high profile project Influenced by experiences at

More information

Introduction to GNU Radio

Introduction to GNU Radio Introduction to GNU Radio MAC-TC Tanguy Risset Citi Laboratory, INSA de Lyon May 25, 2016 Tanguy Risset Introduction to GNU Radio 1 Table of contents 1 Introduction to Gnu radio 2 GNU radio with gnuradio-companion

More information

Identifying and Fixing Parameter Sniffing

Identifying and Fixing Parameter Sniffing Identifying and Fixing Parameter Sniffing Brent Ozar www.brentozar.com sp_blitz sp_blitzfirst email newsletter videos SQL Critical Care 2017 Brent Ozar Unlimited. All rights reserved. 1 This is genuinely

More information

Agenda. - Final Project Info. - All things Git. - Make sure to come to lab for Python next week

Agenda. - Final Project Info. - All things Git. - Make sure to come to lab for Python next week Lab #8 Git Agenda - Final Project Info - All things Git - Make sure to come to lab for Python next week Final Project Low Down The Projects are Creative AI, Arduino, Web Scheduler, ios and Connect 4 Notes

More information

CS4023 Week04 Lab Exercise

CS4023 Week04 Lab Exercise CS4023 Week04 Lab Exercise Lab Objective: We will use this lab to log in to our Linux accounts and to look at some simple programs that perform a few elementary system calls. By the end of the lab we will

More information

Hello World! Computer Programming for Kids and Other Beginners. Chapter 1. by Warren Sande and Carter Sande. Copyright 2009 Manning Publications

Hello World! Computer Programming for Kids and Other Beginners. Chapter 1. by Warren Sande and Carter Sande. Copyright 2009 Manning Publications Hello World! Computer Programming for Kids and Other Beginners by Warren Sande and Carter Sande Chapter 1 Copyright 2009 Manning Publications brief contents Preface xiii Acknowledgments xix About this

More information

Lecture 8: Structs & File I/O

Lecture 8: Structs & File I/O ....... \ \ \ / / / / \ \ \ \ / \ / \ \ \ V /,----' / ^ \ \.--..--. / ^ \ `--- ----` / ^ \. ` > < / /_\ \. ` / /_\ \ / /_\ \ `--' \ /. \ `----. / \ \ '--' '--' / \ / \ \ / \ / / \ \ (_ ) \ (_ ) / / \ \

More information

HTML CSS JAVASCRIPT WEB PUBLISHING IN ONE HOUR A DAY SAMS TEACH YOURSELF COVERING HTML5 CSS3 AND JQUERY 7TH EDITION

HTML CSS JAVASCRIPT WEB PUBLISHING IN ONE HOUR A DAY SAMS TEACH YOURSELF COVERING HTML5 CSS3 AND JQUERY 7TH EDITION HTML CSS JAVASCRIPT WEB PUBLISHING IN ONE HOUR A DAY SAMS TEACH YOURSELF COVERING HTML5 CSS3 AND JQUERY 7TH EDITION page 1 / 5 page 2 / 5 html css javascript web pdf We have curated a list of free development

More information

RFNoC Deep Dive: Host Side Martin Braun 5/28/2015

RFNoC Deep Dive: Host Side Martin Braun 5/28/2015 RFNoC Deep Dive: Host Side Martin Braun 5/28/2015 Why Host Development? Typical application is run and controlled from hostbased process (e.g. GNU Radio) Setting up heterogeneous processing in a simple

More information

Introduction to Programming Style

Introduction to Programming Style Introduction to Programming Style Thaddeus Aid The IT Learning Programme The University of Oxford, UK 30 July, 2013 Abstract Programming style is the part of the program that the human reads and the compiler

More information

Day 28 Arithmetic Sequence. Find the next two terms of each sequence. Then describe the pattern. The equations will be completed later.

Day 28 Arithmetic Sequence. Find the next two terms of each sequence. Then describe the pattern. The equations will be completed later. Find the next two terms of each sequence. Then describe the pattern. The equations will be completed later. 1, 3, 5, 7, 9,, Description: Equation: 2, 7, 12, 17, 22,, Description: Equation: -416, -323,

More information

Lab 03 - x86-64: atoi

Lab 03 - x86-64: atoi CSCI0330 Intro Computer Systems Doeppner Lab 03 - x86-64: atoi Due: October 1, 2017 at 4pm 1 Introduction 1 2 Assignment 1 2.1 Algorithm 2 3 Assembling and Testing 3 3.1 A Text Editor, Makefile, and gdb

More information

Diode Lab vs Lab 0. You looked at the residuals of the fit, and they probably looked like random noise.

Diode Lab vs Lab 0. You looked at the residuals of the fit, and they probably looked like random noise. Diode Lab vs Lab In Lab, the data was from a nearly perfect sine wave of large amplitude from a signal generator. The function you were fitting was a sine wave with an offset, an amplitude, a frequency,

More information

Secure Programming I. Steven M. Bellovin September 28,

Secure Programming I. Steven M. Bellovin September 28, Secure Programming I Steven M. Bellovin September 28, 2014 1 If our software is buggy, what does that say about its security? Robert H. Morris Steven M. Bellovin September 28, 2014 2 The Heart of the Problem

More information

CS842: Automatic Memory Management and Garbage Collection. GC basics

CS842: Automatic Memory Management and Garbage Collection. GC basics CS842: Automatic Memory Management and Garbage Collection GC basics 1 Review Noting mmap (space allocated) Mapped space Wile owned by program, manager as no reference! malloc (object created) Never returned

More information